目录
一、概述
二、杀死进程
三、查询日志命令
1.tail 相关命令
2. head 相关操作命令
3. cat 相关操作命令
四、应用场景
1. 应用场景一:按行号查看---过滤出关键字附近的日志
2. 应用场景二:选取日志中特定范围进行分析
3. 应用场景三:日志内容特别多,打印在屏幕上不方便查看
4. 应用场景四:使用管道进行 and or 条件处理
一、概述
在我们部署项目中服务中,服务有异常信息,通过查看服务器上日志,定位错误,能够快速排查问题,下面是讲解是 Linux 下查看日志用到的常用命令。
二、杀死进程
1. 杀僵尸进程部分程序员,肯定喜欢下面命令:
1.1 查询 java 进程ID
ps -ef | grep 'java'
1.2 杀死进程 PID
kill -9 PID(生产环境谨慎使用)
2. kill、killall、pkill命令的区别
- kill:通过pid来杀死进程
- killall (killall [参数] [进程名]):Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
- pkill:pkill 和killall 应用方法差不多,也是直接杀死运行中的程式;如果你想杀掉单个进程,请用kill 来杀掉。例子: pkill -9 firefox
三、查询日志命令
1.tail 相关命令
-n 是显示行号;相当于nl命令;例子如下:
- tail -f 100 debug.log 实时监控100后行日志
- tail -n 10 debug.log 查询日志尾部最后10行的日志;
- tail -n +10 debug.log 查询10行之后的所有日志;
2. head 相关操作命令
跟 tail 是相反的,tail是看后多少行日志;例子如下:
- head -n 10 debug.log 查询日志文件中的头10 行日志;
- head -n -10 debug.log 查询日志文件除了最后10 行的其他所有日志;
3. cat 相关操作命令
tac 是倒序查看,是cat单词反写;例子如下:
syncReportToalgorithm execute
cat -n debug.log | grep 'syncReportToalgorithm execute'
四、应用场景
1. 应用场景一:按行号查看---过滤出关键字附近的日志
- 得到关键日志的行号
cat -n debug.log |grep 'onOffLine equipmentStatus=40'
- 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们还有个需求就是输出当前这个日志的前后几行:
- cat error.log | grep -B 5 'nick' 显示nick及前5行
- cat error.log | grep -A 5 'nick' 显示nick及后5行
- cat error.log | grep -C 5 'nick' 显示file文件里匹配nick字串那行以及上下5行
- cat error.log | grep -n -B10 -A10 5 'nick' 显示file文件里匹配nick字串前后10行
说明:
- -A 表示关键字之后,After
- -B 表示关键字之前,Before
- -C 表示关键字前后,Context
2. 应用场景二:选取日志中特定范围进行分析
1)cat -n test.log | tail -n +1000 | head -n 20 从第1000行开始,显示20行
tail -n +1000 表示查询1000行之后的日志
head -n 20 则表示在前面的查询结果里再查前20条记录
2)cat catalina.out | head -n 1400| tail -n +1350 显示1350行到1400行 (实现原理都差不多,就是通过语法糖)
(1)按日期截取 :一般在日志系统中都会记录打印日志的时间,通常我们非常需要查找指定时间端的日志:
sed -n '/2021-07-16 08:46:15/,/2021-07-16 09:46:15/p' debug.log
grep '2021-07-16 08:46:15' debug.log
(2)按行数截取
sed -n '10000,20000p' debug.log
sed -i '/关键词/d' catalina.out 删除包含关键词的行
3. 应用场景三:日志内容特别多,打印在屏幕上不方便查看
(1) 使用 more 和 less 命令
如: cat -n debug.log |grep 'debug' | more 这样就分页打印了,通过点击空格键翻页
>xxx.txt 将其保存到文件中,到时可以拉下这个文件分析
如:cat -n test.log |grep 'debug' > debug.txt
4. 应用场景四:使用管道进行 and or 条件处理
and 使用管道实现 例如: grep -n '日志排查' test.log | grep '日志';
or 用-E 例如:grep -n -E '日志排查 | hello' test.log 满足两个关键字的都可以找出来;