linux命令备忘录
linux系统登录远程服务器
ssh -p22 root@www.lizhiyu.xyz
windws查看端口号占用的pid
netstat -ano | findstr 37396
linux 传输文件
scp root@107.172.27.254:/home/test.txt . //下载文件
scp test.txt root@107.172.27.254:/home //上传文件
scp -r root@107.172.27.254:/home/test . //下载目录
scp -r test root@107.172.27.254:/home //上传目录
Linux 定时任务
crontab -e 配置定时执行一个shell脚本
开始执行:crontab -e命令的时候提示not found 。。。。
发现是因为没有安装crond
通过:yum -y install crond
安装后:修改crontab -e后确没有执行
后来发现是没有开启,运行命令 service crond start
查看当前设定的任务 crontab -l
查看当前定时任务执行的日志 cat /var/log/cron
crontab格式
可以使用corn表达式在线生成器
基本格式 :
* * * * * command
分 时 日 月 周 命令
0-59 0-23 1-31 1-12 0-6 命令
如果想要1分钟内多次执行可以使用下面方法配置,如下为10秒执行一次
* * * * * sh /usr/local/test.sh
* * * * * sleep 10; sh /usr/local/test.sh
* * * * * sleep 20; sh /usr/local/test.sh
* * * * * sleep 30; sh /usr/local/test.sh
* * * * * sleep 40; sh /usr/local/test.sh
* * * * * sleep 50; sh /usr/local/test.sh
linux文本文件查看
动态查看文件最后100行
-f 代表动态的显示
-n 表示显示1000行
tail -f -n 1000 aaa.txt
查看文件最后几页
less aaa.txt
shift + g 跳到最后一行
b 查看上一页
空格 查看下一页
在文件中查找指定信息(附加行号)
grep "要查找的内容" aaa.txt
-n 代表查找行号
grep -n "要查找的内容" aa.txt
查看文件中某一行的内容
n 假设为行号
m 假设为一页显示几行
more +n -m aaa.txt
根据日期切割日志
日期格式要写成固定样子
sed '/2021-01-22 12:03:59/,/2021-01-22 12:03:59/p' aaa.2021-01-22.log
//看行号
sed '/2021-01-22 12:03:59/,/2021-01-22 12:03:59/p' aaa.2021-01-22.log | wc -l
//输入到一个文件中
sed '/2021-01-22 12:03:59/,/2021-01-22 12:03:59/p' aaa.2021-01-22.log >> aaa.txt
printf 的使用
\t #制表符
\n #换行符
printf #格式化输出,不会自动换行。
print #打印出内容,默认会自动换行
%ns:字符串型,n代表有多少个字符
%ni:整型,n代表输出几个数字
%.nf:浮点型,n代表的是小数点后有多少个小数
打印6个字符串类型的数
eg:printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6
打印6个字符串类型的数,每三个换行打印
eg:printf '%s\t%s\t%s\t\n' 1 2 3 4 5 6
打印6个整型的数
eg:printf '%i\t%i\t%i\t\n' 1 2 3 4 5 6
打印浮点数保留1位小数
printf '%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f' 1.11 2.11 3.11 4.11 5.11 6.11
linux命令4剑客使用
grep 根据匹配信息取得某一行信息
-v #对内容进行取反提取
-n #对提取的内容显示行号
-w #精确匹配
-i #忽略大小写
^ #匹配开头行首
-E #正则匹配
查找正在运行的某个进程
ps -ef | grep tomcat
在文件中查找信息
grep "xxx" text.log
查找开头为xxx的信息
grep "^xxx" text.log
正则匹配查找
grep -E 'root|lizhiyu' text.log
查找不包含xxx的行
grep -v 'xxx' text.log
cut 对数据进行列的提取
-d #指定分割符,不指定则为默认是制表符
-f #指定截取区域(可以截取想要的任意几列)
-c #以字符为单位进行分割
eg:以':'为分隔符,截取出/etc/passwd的第一列跟第三列
cut -d ':' -f 1,3 /etc/passwd
eg:以':'为分隔符,截取出/etc/passwd的第一列到第三列
cut -d ':' -f 1-3 /etc/passwd
eg:以':'为分隔符,截取出/etc/passwd的第二列到最后一列
cut -d ':' -f 2- /etc/passwd
eg:截取/etc/passwd文件从第二个字符到第九个字符
cut -c 2-9 /etc/passwd
查找linux上面所有可登陆普通用户
/etc/passwd下每一行存着一个用户,/bin/bash代表这个用户有登录权限
grep '/bin/bash' /etc/passwd | cut -d ':' -f 1 | grep -v root
awk 对数据进行列的提取和修改
awk '条件 {执行动作}' 文件名
awk '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
awk [选项] '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
$1 #代表第一列
$2 #代表第二列
$0 #代表一整行
BEGIN #在读取所有行内容前就开始执行,常常被用于修改内置变量的值
FS #BEGIN时定义分割符
END #结束的时候 执行
NR #行号
打印使用率
eg:df -h |grep /dev/vda1 | awk '{printf "/dev/vda1的使用率是:"} {print $5}'
浮点数保留几位
echo "scale=2; 0.13 + 0.1" | bc | awk '{printf "%.2f\n", $0}'
打印第5列
eg: df -h | grep /dev/vda1 | awk '{print $5}'
-F #指定分割符
指定分割符为 :
eg:cat /etc/passwd | awk -F":" '{print $1}'
BEGIN #在读取所有行内容前就开始执行,常常被用于修改内置变量的值
FS #BEGIN时定义分割符
eg:cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'
END #结束的时候 执行一次
eg:cat /etc/passwd | awk '{print $1} END {print 1}'
NR #行号
打印第二行数据第五列
eg:df -h | awk 'NR==2 {print $5}' /etc/passwd
打印20行到30行的第1列
eg:awk '(NR>=20 && NR<=30) {print $1}' /etc/passwd
sed
常见的选项与参数:
-n #把匹配到的行输出打印到屏幕
p #以行为单位进行查询,通常与-n一起使用
打印第二行
eg:df -h | sed -n '2p'
d #删除
打印除了第二行的数据
eg: sed '2d' df.txt
a #在行的下面插入新的内容
在第二行下边插入新的数据
eg: sed '2a 1234567890' df.txt
i #在行的上面插入新的内容
在第二行上边插入新的数据
eg: sed '2i 1234567890' df.txt
c #替换
将第二行替换成新的数据
eg: sed '2c 1234567890' df.txt
s/要被取代的内容/新的字符串/g #指定内容进行替换
将0%替换成100%
eg: sed 's/0%/100%/g' df.txt
-i #对源文件进行修改(高危操作,慎用,用之前需要备份源文件)
搜索:在文件中搜索内容
eg:cat -n df.txt | sed -n '/100%/p'
-e #表示可以执行多条动作
eg:cat -n df.txt | sed -n -e 's/100%/100%-----100%/g' -e '/100%-----100%/p'