在 Debian(以及一般 Linux)系统上,“进程自动退出”原因很多,需要结合日志、退出码、运行方式来判断。下面按常见原因 → 排查方法给你一个系统性的梳理。
exit(0))exit(non-zero)排查:
echo $?
0:正常退出1/2/137 等:异常或信号内存不足时,内核 OOM Killer 会杀进程。
特征:
dmesg 中有 Out of memory排查:
dmesg | grep -i oom
journalctl -k | grep -i oom
如果是 systemd 服务:
常见原因:
Restart=noTimeoutStartSecMemoryMax查看:
journalctl -u 服务名
systemctl status 服务名
如果你这样运行:
./app
然后:
进程会收到 SIGHUP 退出。
解决:
nohup ./app &
# 或
setsid ./app
# 或
screen / tmux
ulimit 限制(打开文件数、栈大小)查看:
ulimit -a
排查:
ldd 程序
strace -f 程序
cron 任务执行完就结束怎么运行的?
看日志
journalctl -xe
dmesg
/var/log/syslog
echo $?
dmesg | grep oom
strace -e trace=signal -f 程序
你可以补充:
我可以直接帮你判断是 OOM / systemd / 信号 / 代码问题。