用 journalctl 快速定位 Linux 服务故障:比翻日志文件更省事
【摘要】 云主机上服务挂了,很多人第一反应是 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 和单元状态收进统一日志库,好处是:
- 按单元过滤:直接跟某个 service,不被别的噪声淹没。
- 按时间切窗:只看「重启前后十分钟」。
- 按级别筛: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 上,应用异常常见三类:端口没监听、进程反复重启、配置写错。建议顺序:
systemctl is-active <服务>看是否 active。ss -tlnp | grep <端口>确认端口是否在听。- 用上面的
journalctl -u ... --since看崩溃或配置报错原文。 - 若安全组已放行但外网不通,再查本机防火墙与 Nginx/反向代理 upstream。
把「单元状态 + 端口 + 最近错误日志」三件套贴进工单或自己的笔记,比丢一整份 /var/log 更高效。
小提示
- 容器内应用若不用 systemd,journalctl 帮不上,应看
docker logs。 - 日志太多时可加
-n 200限制行数。 - 需要持久化排查时,把关键片段重定向到文件,别在生产机上无脑
journalctl --vacuum除非你清楚保留策略。
掌握这几条,下次服务 502 或「起不来」,通常几分钟内就能定位到是配置、依赖,还是进程本身退出。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)