核心武器:grep

灵魂奥义:-A、-B、-C、-H、-i、-c

常用 grep 参数对照表

参数 说明
-A N 显示匹配行之后 N 行
-B N 显示匹配行之前 N 行
-C N 显示匹配行上下文 N 行
-H 打印文件名
-i 忽略大小写
-r 递归搜索子目录
-c 统计匹配数量

场景一:查异常堆栈,绝不能只看一行!

grep -A 50 'java.lang.NullPointerException' info.log

-A 50 的意思是匹配到的行+后面 50 行,堆栈信息一览无余。

grep -A 50 "java.lang.NullPointerException" a.log | less

在 less 里你可以:

  • ↑↓ / PageUp PageDown 滚动
  • G 直达末尾
  • /Exception 继续搜索
  • q 退出

场景二:实时看新日志

tail -f a.log | grep -A 50 'java.lang.NullPointerException'

报错一来,堆栈直接推到你面前。
大小写怕拼错?加 -i 忽略大小写。想停?Ctrl + C。

场景三:翻历史日志 & 压缩日志

线上日志常常被分片+压缩,变成 a.log.2025-07-02.gz。这时候别傻傻解压。 (-H 会打印文件名,帮你知道异常在哪一天爆的。)

查所有 .log 文件:
grep -H -A 50 "java.lang.NullPointerException" *.log

查 .gz 文件:
zgrep -H -A 50 "java.lang.NullPointerException" *.gz

场景四:统计异常数量

你想知道异常是偶发还是疯狂刷屏?

grep -c "java.lang.NullPointerException" *.log

很快就能知道是 “今天抽风一次”,还是 “系统已经炸锅”。

作者:admin  创建时间:2025-08-21 14:11
最后编辑:admin  更新时间:2025-09-19 10:08