Linux 日志排查:grep / tail / journalctl 常用组合
【摘要】 服务器出问题时,先看日志。grep 负责定位,tail 跟进最新输出,journalctl 查 systemd 服务日志,三者组合基本够用。 一、grep:先定位,再看上下文查报错加 -n 显示行号,大小写不统一用 -i 忽略:grep -n "ERROR" /var/log/app.loggrep -i "timeout" /var/log/app.log一行报错不够判断,用 -A、-B ...
服务器出问题时,先看日志。grep 负责定位,tail 跟进最新输出,journalctl 查 systemd 服务日志,三者组合基本够用。
一、grep:先定位,再看上下文
查报错加 -n 显示行号,大小写不统一用 -i 忽略:
grep -n "ERROR" /var/log/app.log
grep -i "timeout" /var/log/app.log
一行报错不够判断,用 -A、-B 展开上下文,-A 5 为之后 5 行,-B 5 为之前 5 行:
grep -n -A 5 -B 5 "OutOfMemoryError" /var/log/app.log
跨文件查找加 -r,统计匹配次数可接 wc -l。先用 grep 把范围缩小,再用 -A、-B 看完整过程,而不是一上来就翻整个文件。
二、tail -f:盯住正在发生的日志
服务运行时,tail -f 实时跟随新写入的内容:
tail -f /var/log/nginx/error.log
只看报错时,和 grep 串起来:
tail -f /var/log/app.log | grep -i "error"
日志轮转后 tail -f 可能跟丢被替换的文件,长期监控改用 tail -F;排查结束按 Ctrl+C 退出即可。
三、journalctl:查 systemd 服务日志
按服务名查看,实时跟随加 -f:
journalctl -u nginx.service
journalctl -u nginx.service -f
故障后用 --since 限定时间范围,避免被旧日志淹没:
journalctl -u app.service --since "2026-11-12 06:00:00"
journalctl -u app.service --since "1 hour ago"
只看错误级别、最近 50 行:
journalctl -u app.service -p err --since today -n 50
四、排查示例:接口突然返回 502
接口突然大量返回 502,先限定时间看网关日志:
journalctl -u nginx.service --since "2026-11-12 05:50:00" | grep -i "502"
日志反复出现上游连接超时,说明问题在后端。再跟住后端日志找报错:
tail -f /var/log/app.log | grep -n -i -A 3 "timeout"
结果是后端连接池耗尽,前面还有大量慢查询。定位慢查询接口后限流并修复,502 随即恢复。关键是先用时间范围缩小,再用上下文定位根因。
小结
先用 journalctl 或 tail 确定时间范围和最新动态,再用 grep -n 定位、-i 兜底大小写、-A、-B 还原上下文。先缩小范围再展开细节,多数问题都能在日志里找到答案。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)