在嵌入式开发与系统运维/DevOps过程中,日志是定位问题和分析系统行为的关键依据。面对海量的日志文件,如何快速、精准地找到所需信息是一项必备技能。本文将介绍几种基于Linux命令行的实用日志定位与分析方法。
基础日志查看命令
在开始复杂查询前,先掌握几个最基础的日志查看命令。
-
动态查看日志尾部 (tail -f)
此命令常用于实时监控日志的最新输出,对于跟踪正在运行的程序或服务的动态非常有效。
tail -f catalina.out
-
查看整个日志文件 (cat)
从头开始完整地显示文件内容,适合查看较小的日志文件。
cat catalina.out
你也可以将过滤后的内容重定向到新文件,方便后续分析。
cat -n catalina.out |grep 717892466 > nanjiangtest.txt
-
tail与head命令的常用组合
这两个命令常组合使用,用于截取日志文件的特定部分。
# 查看日志文件最后 number 行
tail -n number catalina.out
# 查看从第 number 行开始到文件末尾的所有日志
tail -n +number catalina.out
# 查看日志文件前 number 行
head -n number catalina.out
# 查看除了最后 number 行之外的所有日志
head -n -number catalina.out
6种进阶日志定位方法
方法一:根据关键字定位并查看上下文
当通过grep找到的关键日志信息量不足时,需要查看其附近的日志来获取完整上下文。
步骤:
- 使用
cat -n显示行号,并用grep找到目标关键字及其行号。
cat -n catalina.out | grep “71789246613230539”
输出示例:
13230539 [11:07 17:47:11] INFO nanjiang:Edit Old Article:717892466-2020-11-07 17:47:11
- 假设我们找到目标行号为
13230539,可以使用tail和head组合命令查看该行前后若干行的日志。
cat -n catalina.out | tail -n +13230539 | head -n 10
tail -n +13230539:输出从第13230539行开始到文件末尾的内容。
head -n 10:再从上述结果中取前10行。
- 最终效果:查看第13230539行开始的连续10行日志。
方法二:查看指定时间段内的日志
此方法用于筛选出特定时间区间内产生的所有日志记录。
- 先确认时间点是否存在
grep ‘11:07 18:29:20’ catalina.out
grep ‘11:07 18:31:11’ catalina.out
- 使用
sed命令提取时间范围内的日志
# 提取从‘11:07 18:29:20’到‘11:07 18:31:11’之间的所有日志
sed -n ‘/11:07 18:29:20/,/11:07 18:31:11/p’ catalina.out
# 也可以使用模糊时间,匹配以特定字符串开头的时间
sed -n ‘/11:07 18:29:/,/11:07 18:31:/p’ catalina.out
方法三:统计关键字出现次数
快速评估某个事件(如特定错误、访问ID)发生的频率。
grep ‘1175109632’ catalina.out | wc -l
命令wc -l会计算grep匹配到的行数。
方法四:在日志尾部实时过滤关键字
监控最新日志的同时,只关注包含特定关键字的条目,非常适合持续追踪某个特定模块或请求的状态。
tail -n 20 catalina.out | grep ‘INFO Takes:1’
方法五:高亮显示查询结果
在查询结果中高亮显示匹配的关键字,使结果一目了然。
tail -n 20 catalina.out | grep ‘INFO Takes:1’ --color
方法六:查看关键字及其上下文(扩展行)
在显示匹配行的基础上,额外展示其前后若干行(上下文),便于更全面地理解日志场景。
tail -n 20 catalina.out | grep ‘INFO Takes:1’ --color -A2 -B2
-A2:显示匹配行之后的2行(After)。
-B2:显示匹配行之前的2行(Before)。
辅助工具与技巧
分页查看大量结果
当grep或其它命令产生大量输出时,可以使用more或less命令进行分页浏览,这在运维/DevOps日常工作中处理大型日志时尤其有用。
# 使用 more,空格键翻页
tail -n 2000 catalina.out | grep ‘INFO Takes:1’ --color -A2 -B2 | more
# 使用 less,功能更强大,支持前后滚动
tail -n 2000 catalina.out | grep ‘INFO Takes:1’ --color -A2 -B2 | less
less 命令的常用导航快捷键
在less命令的浏览界面中,熟练使用快捷键可以极大提升效率。
全屏导航:
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
单行导航:
其它导航:
G - 移动到最后一行
g - 移动到第一行
q 或 ZZ - 退出 less 命令
掌握这些命令组合与技巧,能帮助开发者和运维人员在海量日志中迅速定位问题根源,有效提升故障排查与系统调试的效率。
|