Linux 进程“突然消失”通常不是无缘无故的,而是被某种机制终止(kill)或主动退出了。下面按常见原因 → 排查方法来说明。
现象
排查
dmesg | egrep -i "oom|killed"
或
journalctl -k | grep -i oom
特征
Out of memory: Kill process 12345 (xxx)
✅ 解决方向:
可能来源
kill -9排查
journalctl -u 服务名
或
ausearch -m ANOM_KILL
现象
core dumped排查
echo $?
常见退出码:
查看 core:
ulimit -c
coredumpctl list
现象
错误示例
ssh host "app &" # 断开即死
✅ 正确方式:
nohup app &
disown
或
setsid app
systemd
Restart=noMemoryMax 超限TimeoutStopSec查看:
systemctl show 服务名 | grep -i memory
容器
docker stop排查:
ausearch -m AVC
journalctl | grep -i denied
# 1. 是否 OOM
dmesg | grep -i oom
# 2. 是否异常退出
journalctl -xe
# 3. 进程退出码
echo $?
# 4. 是否被父进程带走
ps -o pid,ppid,cmd -p 进程号
# 5. 是否被 systemd 管理
systemctl status 服务名
dmesg 或 journalctl 相关输出告诉我这些,我可以直接帮你定位“到底是谁杀的”。