工作中经常需要查看服务器的任务日志,而日志太多,不好筛选,所以记录一下常用的通过关键词看日志的方法。
一、查看
1、动态日志查看。
说明:程序启动可以动态查看运行日志。
tail -f 文件名.log
2、显示最后100行
说明:动态日志没有写入的时候,可以用该命令查询最后的几行
tail -100f 文件名
二、关键词查询
常用(可记住):
cat -n 文件名 | grep "关键词"
//查询显示包括关键词的(A前B后C前后)几行
cat -n 文件名 |grep '关键词' -A 2
//关键词行号的+几行之后,-几行之前
more +行号 文件名
1、关键字普通查询
说明:会查询日志文件中涉及关键词的那一行,并显示出来,关键词在日志中出现太多就不好定位。
cat 文件名 | grep "关键词"
2、关键字搜索并显示行号
说明:搜索出关键字内容且显示关键字所在行, n参数为显示行号
cat -n 文件名 | grep "关键词"
3.按照关键字搜索并包含前(后)多少行
cat -n 文件名 |grep '关键词' -A 2
说明:
-A 表示关键字之后,After
-B 表示关键字之前,Before
-C 表示关键字前后,Context
案例:查询关键词后面2行一起显示。
4.根据关键字所在行号,查看第N行前面或者后面的日志
more +行号 文件名,查看后面的数据,q退出
more -行号 文件名,查看前面的数据,q退出
more +行号 文件名
(1)定位到18行,从18行查看后面的日志。
more +18 文件名
(2)查询18行之前的日志
more -18 文件名
5.根据关键字所在行号,显示后面的几行
cat 文件名 | tail -n +第几行开始| head -n 显示几行
案例:从18行开始,显示30行
cat 文件名 | tail -n +18| head -n 30
三、截取
1.先了解>和>>
清空c文件写入
tail -10 b.txt > c.txt
追加写入到c文件
tail -10 b.txt >> c.txt
2.截取几行到几行的数据,写入到文件
sed -n ‘10000,20000p’ 文件名> test.log
3.其他相关sed命令
1.history命令写入到1.txt
history >1.txt
2.把1.txt文件中写入到2.txt,第1到3行不写入。
sed '1,3d' 1.txt >2.txt
结果:1到3行删除了。相当于文件1中的几行不需要写入到文件2,使用该命令。
3.删除1文件中1到3行
sed -i '1,3d' 1.txt
4.截取最后几行写入到另外一个文件
tail -100000 文件名 > b.txt
5.截取时间内容到另外一个文件
grep '2023-03-17 14:57 >a.txt
四、定时日志压缩备份
1.编写log_backup.sh 压缩日志文件
[root@localhost logs]# cd /root/
[root@localhost ~]# ls
log_backup.sh
[root@localhost ~]# cat log_backup.sh
cd /home/user01/java/project/
tar tar czf `date +"%Y-%m-%d"`.tar.gz nohup.out
sleep 1
cat /dev/null > nohup.out
2.写入到crontab相关定时任务命令
写入编辑命令:crontab -e
查看命令:crontab -l
[root@localhost logs]# crontab -l
*/20 * * * * /sbin/ntpdate -u 10.30.24.21 > /dev/null 2>&1
59 23 * * * /root/log_backup.sh