排障的顺序比工具重要。先看现象,再看日志,最后才动手。

一个真实的排查路径

某次 systemd 服务始终处于 activating 状态,systemctl status 只给了一句模糊的失败原因。

  1. systemctl status myapp -l —— 看最后一次退出码;
  2. journalctl -u myapp -n 100 --no-pager —— 看应用自己吐了什么;
  3. ss -lntp —— 确认端口到底有没有被监听;
  4. strace -f -e trace=network —— 还看不出来才上这个。

常见误判

  • 看到 permission denied 就去 chmod 777:真正的问题往往是 SELinux 或目录属主,放开权限只是把问题藏起来。
  • 以为是内存不够:OOMKilled 会在 dmesg 里留痕,没看到就别猜。
# 确认是不是被 OOM killer 干掉
dmesg -T | grep -i -E "killed process|out of memory"

排障的终点不是"服务起来了",而是"我知道它为什么起不来"。

小结

把每次排障写成一条可复用的检查链,比记住一堆命令有用得多。