在 CentOS 上“进程自动死(自动退出 / 被杀掉)”是很常见的问题,通常不是系统随机行为,而是被某种机制终止了。下面按最常见原因 → 排查方法 → 解决思路给你系统梳理一下。
当系统内存不足时,Linux 内核会杀掉占用内存最多的进程。
特征
dmesg 或 /var/log/messages 中有 Out of memory排查
dmesg | grep -i oom
grep -i "killed process" /var/log/messages
解决
如果你是这样启动的:
./myapp
然后 SSH 断开,进程通常会死。
原因
SIGHUP解决
nohup ./myapp &
# 或
setsid ./myapp &
# 或
screen / tmux
如果是 systemd 服务:
systemctl status myapp
journalctl -u myapp -n 100
常见问题:
Type 配置错(如写成 forking)特征
Segmentation fault排查
dmesg | grep -i segfault
ulimit -c
比如:
cronsupervisor检查
crontab -l
ps aux | grep kill
uptime
last reboot
dmesg
/var/log/messages
journalctl -xe
| 信号 | 含义 |
|---|---|
| SIGKILL (9) | 强制杀,通常是 OOM / kill -9 |
| SIGTERM (15) | 正常退出请求 |
| SIGSEGV (11) | 程序崩溃 |
| SIGHUP (1) | 终端断开 |
如果你愿意,可以补充:
cat /etc/centos-release)dmesg 输出我可以直接帮你定位是哪一类问题。