Linux 运维入门:用 journalctl 快速排查服务故障的 5 个实用技巧
在 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 四个参数加上磁盘清理,日常九成以上的服务故障都能快速定位。排查完再决定要不要重启,比盲目重启靠谱得多。
- 点赞
- 收藏
- 关注作者
评论(0)