Linux 日志排查三板斧:journalctl、grep 与 tail -f

举报
yd_221252513 发表于 2026/11/04 17:22:46 2026/11/04
【摘要】 服务 overnight 挂了却无从下手?用 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 让你亲眼看着“现在还错不错”。三招都是最小成本工具,不需要额外安装,紧急排障时先跑通时间线,再圈错误,再复现,比乱翻文件快十倍。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。