Linux 日志排查三板斧:journalctl、grep 与 tail -f
从一次「昨晚服务挂了」说起
值班群里一句“服务昨晚挂了,帮看看”,新手往往直接打开一万个日志文件找不到北。日志排查其实有固定套路:先定位时间线,再圈定关键行,最后盯住实时输出复现。三步对应的三招就是 journalctl、grep 和 tail -f。
第一板斧:journalctl 锁时间窗
systemd 体系下,所有服务的标准输出都被 journal 收口。怀疑 Nginx 昨晚出事,先拉昨晚一到今早的日志:journalctl -u nginx --since "2026-11-03 22:00" --until "2026-11-04 08:00"。加 -p err 只看错误级别,加 --no-pager 管道给 grep。服务起没起、崩在哪一秒、重启了几次,时间线一目了然,这一步就把“大海捞针”变成了“对着名单找人”。
第二板斧:grep 圈定关键字
应用自己的日志文件(如 app.log)动辄几百兆,直接读是不现实的。grep 三个参数值得焊在手上:-i 忽略大小写(Error/ERROR 都能命中)、-C 5 上下文(出错行前后的现场一起看)、-n 带行号(方便和同事对齐讨论)。组合示例:grep -inC 5 "timeout" app.log,基本一次就能圈出错乱最早出现的位置和前因。
第三板斧:tail -f 盯复现
定位到嫌疑点后,改完配置要验证,就让 tail -f app.log 挂在前台,自己动手触发一次请求,日志实时滚出来,配合 --pid 或 grep 管道只 关注关键行。多次追加写入的日志还可以 tail -F,文件被轮转切割后也不会断流。
三斧连招的小结
journalctl 告诉你“什么时候出的事”,grep 告诉你“哪里出的错”,tail -f 让你亲眼看着“现在还错不错”。三招都是最小成本工具,不需要额外安装,紧急排障时先跑通时间线,再圈错误,再复现,比乱翻文件快十倍。
- 点赞
- 收藏
- 关注作者
评论(0)