Debian 系统上的“进程自动停(退出/被杀/停止)”是一个很常见但原因很多的问题。下面按最常见原因 → 排查方法给你梳理一下,你可以对照看是哪一类。
如果你是在 SSH 或终端里直接运行:
./myprogram
一旦断开连接,进程就会收到 SIGHUP 而退出。
✅ 解决:
nohup:nohup ./myprogram &
screen / tmuxsystemd 托管(推荐)Debian 在内存耗尽时,内核会杀掉占用最高的进程。
查看是否被 OOM 杀:
dmesg | grep -i "killed process"
journalctl -k | grep -i oom
✅ 解决:
如果是 systemd 服务:
systemctl status yourservice
journalctl -u yourservice
常见原因:
Type 配置错误(如写成 simple 但程序 fork 了)✅ 解决:
while(1) 不退出[Service]
Type=simple
Restart=on-failure
查看退出原因:
echo $?
或看日志:
journalctl -xe
常见:
cron 里有 kill 脚本monit, supervisor)重启策略systemd 的 RuntimeMaxSec 限制检查:
systemctl show yourservice | grep Runtime
检查:
last reboot
journalctl -b -1
systemctl list-units --type=service
journalctl -xe
dmesg | tail
echo $?
你可以补充:
我可以直接告诉你为什么停、怎么改。