Linux 运维入门:用 journalctl 快速排查服务故障的 5 个实用技巧

举报
yd_221024848 发表于 2026/10/28 21:48:13 2026/10/28
【摘要】 journalctl 是 Linux 排查服务故障的利器。本文分享 5 个实用技巧:按服务过滤日志、只看本次开机记录、实时跟踪输出、定位 OOM 杀进程,以及清理日志占用空间,帮你快速定位服务故障根因。

在 Linux 服务器运维中,服务启动失败、进程异常退出是最常见的故障场景。很多新手第一反应是重启碰运气,其实只要会用 journalctl,大多数问题几分钟就能定位。下面分享 5 个我常用的排查技巧。

一、看某个服务的日志

systemd 管理的服务,日志统一进了 journald。想看 nginx 为什么起不来,一条命令即可:

journalctl -u nginx.service -e

-e 会直接跳到日志末尾,省去翻页。加 --since "10 min ago" 可以只看最近十分钟的输出,避免被海量历史日志淹没。

二、看本次开机以来的日志

服务器跑了很久,历史日志很庞杂。加 -b 参数只看本次开机后的记录:

journalctl -b -u sshd

配合 -p err 可以只过滤错误级别及以上的日志,快速抓住重点:

journalctl -b -p err

三、跟踪实时日志

改完配置重启服务后,想盯着日志观察有没有新报错,用 -f:

journalctl -u mysql -f

效果类似 tail -f,Ctrl+C 退出。这个在调试定时任务和守护进程时特别顺手。

四、定位 OOM 与进程被杀

进程莫名其妙消失,多半是被 OOM killer 杀了。直接搜内核日志:

journalctl -k --since today | grep -i "out of memory"

如果确认是内存不足,就要检查服务的内存限制配置(systemd 的 MemoryMax)或应用本身的内存泄漏。

五、控制日志占用空间

journald 默认可能占掉几个 GB。用 journalctl --disk-usage 查看占用,vacuum 清理到指定大小:

journalctl --vacuum-size=500M

再在 /etc/systemd/journald.conf 里把 SystemMaxUse 设为 500M,一劳永逸。

总结

journalctl 的核心思路是「按单元过滤、按时间切片、按级别聚焦」。掌握 -u、-b、-p、-f 四个参数加上磁盘清理,日常九成以上的服务故障都能快速定位。排查完再决定要不要重启,比盲目重启靠谱得多。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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