找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1248

积分

0

好友

184

主题
发表于 3 天前 | 查看: 10| 回复: 0

在嵌入式开发与系统运维/DevOps过程中,日志是定位问题和分析系统行为的关键依据。面对海量的日志文件,如何快速、精准地找到所需信息是一项必备技能。本文将介绍几种基于Linux命令行的实用日志定位与分析方法。

基础日志查看命令

在开始复杂查询前,先掌握几个最基础的日志查看命令。

  1. 动态查看日志尾部 (tail -f)
    此命令常用于实时监控日志的最新输出,对于跟踪正在运行的程序或服务的动态非常有效。

    tail -f catalina.out
  2. 查看整个日志文件 (cat)
    从头开始完整地显示文件内容,适合查看较小的日志文件。

    cat catalina.out

    你也可以将过滤后的内容重定向到新文件,方便后续分析。

    cat -n catalina.out |grep 717892466 > nanjiangtest.txt
  3. tailhead命令的常用组合
    这两个命令常组合使用,用于截取日志文件的特定部分。

    # 查看日志文件最后 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找到的关键日志信息量不足时,需要查看其附近的日志来获取完整上下文。

步骤

  1. 使用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
  2. 假设我们找到目标行号为13230539,可以使用tailhead组合命令查看该行前后若干行的日志。
    cat -n catalina.out | tail -n +13230539 | head -n 10
    • tail -n +13230539:输出从第13230539行开始到文件末尾的内容。
    • head -n 10:再从上述结果中取前10行。
    • 最终效果:查看第13230539行开始的连续10行日志。
方法二:查看指定时间段内的日志

此方法用于筛选出特定时间区间内产生的所有日志记录。

  1. 先确认时间点是否存在
    grep ‘11:07 18:29:20’ catalina.out
    grep ‘11:07 18:31:11’ catalina.out
  2. 使用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或其它命令产生大量输出时,可以使用moreless命令进行分页浏览,这在运维/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 - 向后移动半屏

单行导航

  • j - 向下移动一行
  • k - 向上移动一行

其它导航

  • G - 移动到最后一行
  • g - 移动到第一行
  • qZZ - 退出 less 命令

掌握这些命令组合与技巧,能帮助开发者和运维人员在海量日志中迅速定位问题根源,有效提升故障排查与系统调试的效率。




上一篇:2025年React+TypeScript项目配置指南:Vite搭建可扩展脚手架
下一篇:RTOS与Linux核心差异解析:嵌入式开发选型指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 19:40 , Processed in 0.111164 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表