排障的顺序比工具重要。先看现象,再看日志,最后才动手。
一个真实的排查路径
某次 systemd 服务始终处于 activating 状态,systemctl status 只给了一句模糊的失败原因。
systemctl status myapp -l—— 看最后一次退出码;journalctl -u myapp -n 100 --no-pager—— 看应用自己吐了什么;ss -lntp—— 确认端口到底有没有被监听;strace -f -e trace=network—— 还看不出来才上这个。
常见误判
- 看到
permission denied就去chmod 777:真正的问题往往是 SELinux 或目录属主,放开权限只是把问题藏起来。 - 以为是内存不够:
OOMKilled会在dmesg里留痕,没看到就别猜。
# 确认是不是被 OOM killer 干掉
dmesg -T | grep -i -E "killed process|out of memory"
排障的终点不是"服务起来了",而是"我知道它为什么起不来"。
小结
把每次排障写成一条可复用的检查链,比记住一堆命令有用得多。