用 journalctl 快速定位 Linux 服务故障:比翻日志文件更省事

举报
yd_235948304 发表于 2026/10/26 09:09:52 2026/10/26
【摘要】 云主机上服务挂了,很多人第一反应是 cd /var/log 再 tail -f。其实 systemd 管的服务,用 journalctl 往往更快:按服务名过滤、按时间切片、按优先级筛错误,几条命令就能缩小范围。下面用日常排障思路说明。 为什么优先 journalctl传统日志文件分散在多个路径,轮转后还要找 .1、.gz。journald 把 stdout/stderr 和单元状态收进统一...

云主机上服务挂了,很多人第一反应是 cd /var/log 再 tail -f。其实 systemd 管的服务,用 journalctl 往往更快:按服务名过滤、按时间切片、按优先级筛错误,几条命令就能缩小范围。下面用日常排障思路说明。

为什么优先 journalctl

传统日志文件分散在多个路径,轮转后还要找 .1、.gz。journald 把 stdout/stderr 和单元状态收进统一日志库,好处是:

  1. 按单元过滤:直接跟某个 service,不被别的噪声淹没。
  2. 按时间切窗:只看「重启前后十分钟」。
  3. 按级别筛:ERROR/WARNING 一眼可见。

前提是服务用 systemd 管理(多数发行版上的 Nginx、Docker、自建 .service 都是)。

五分钟常用组合

先确认单元名(常见是 nginx.service、docker.service):

systemctl status nginx --no-pager

看最近一次启动以来的日志:

journalctl -u nginx -b --no-pager

只看最近 30 分钟,并带时间戳:

journalctl -u nginx --since "30 min ago" -o short-iso

只要错误级及以上:

journalctl -u nginx -p err..alert --since today

持续跟踪(等价于针对性的 tail -f):

journalctl -u nginx -f

和华为云 ECS 排障怎么配合

在华为云 ECS 上,应用异常常见三类:端口没监听、进程反复重启、配置写错。建议顺序:

  1. systemctl is-active <服务> 看是否 active。
  2. ss -tlnp | grep <端口> 确认端口是否在听。
  3. 用上面的 journalctl -u ... --since 看崩溃或配置报错原文。
  4. 若安全组已放行但外网不通,再查本机防火墙与 Nginx/反向代理 upstream。

把「单元状态 + 端口 + 最近错误日志」三件套贴进工单或自己的笔记,比丢一整份 /var/log 更高效。

小提示

  • 容器内应用若不用 systemd,journalctl 帮不上,应看 docker logs。
  • 日志太多时可加 -n 200 限制行数。
  • 需要持久化排查时,把关键片段重定向到文件,别在生产机上无脑 journalctl --vacuum 除非你清楚保留策略。

掌握这几条,下次服务 502 或「起不来」,通常几分钟内就能定位到是配置、依赖,还是进程本身退出。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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