Linux中进程忽然消失的排查方法总结

排查流程总结

遇到进程消失问题,按以下顺序排查:

第一步,检查 dmesg 是否有 OOM 记录。如果有,问题基本确定是内存耗尽。

第二步,检查 systemd/journalctl 日志。如果进程由 systemd 管理,日志会记录终止原因和收到的信号。

第三步,检查进程退出码。如果是 137 说明收到 SIGKILL,128+信号编号。如果是 0 说明正常退出。

第四步,检查审计日志ausearch。如果配置了 auditd,可以看到是谁执行了 kill 命令。

第五步,检查进程收到的信号。cat /proc/PID/status 可以看到进程的信号掩码。

第六步,分析资源使用。内存、CPU、文件描述符、进程数是否达到限制。

第七步,检查网络和存储。进程可能因为依赖的服务不可用而主动退出。

 总结

进程消失的排查没有万能公式,需要根据信号来源、资源状态、系统日志一步步缩小范围。

OOM Killer 是最常见的原因,表现为 dmesg 中有记录,退出码通常是 137。systemd 超时杀死次之,表现为日志中有 TimeoutStopSec 记录。cgroup 限制在容器化环境中常见,exit code 也是 137。

建立预防机制比事后排查更重要:合理的资源限制、足够的监控告警、适当的 OOMScoreAdjust 配置,可以大大减少进程莫名消失的情况发生。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容