温馨提示×

ubuntu进程为何自动停

小樊
47
2026-10-06 19:10:46
栏目: 智能运维

在 Ubuntu 上“进程自动停(退出/被杀/停止)”是很常见的问题,原因通常可以归为以下几类。你可以对照排查:


一、被系统“杀掉”(最常见)

1. OOM(内存不足)

当系统内存不足时,Linux 的 OOM Killer 会强制杀掉占用内存最多的进程。

常见表现:

  • 进程突然消失
  • dmesg 或 /var/log/syslog 中有 Out of memory
  • 退出码通常是 137(-9 + 128)

排查:

dmesg | grep -i "killed process"
grep -i "oom" /var/log/syslog

解决:

  • 减少内存使用
  • 加 swap
  • 限制内存(systemd / cgroup)

2. systemd 服务被重启/停止

如果你用 systemd 启动进程:

可能原因:

  • Restart=no
  • 进程异常退出
  • 被 systemctl stop 或系统更新影响

查看:

systemctl status your-service
journalctl -u your-service

二、进程自己退出

3. 程序崩溃 / 段错误

  • 段错误(SIGSEGV)
  • 未捕获异常

查看:

dmesg
journalctl -xe

4. 退出码非 0

常见退出码:

  • 1:程序错误
  • 137:被 kill(内存)
  • 143:SIGTERM
  • 139:SIGSEGV

查看:

echo $?

三、外部因素

5. 终端关闭导致进程结束

如果你在 SSH / 终端直接运行:

python app.py

关闭终端 → 进程收到 SIGHUP

解决:

nohup python app.py &
# 或
screen
tmux
disown

6. 定时任务 / 脚本杀进程

检查:

crontab -l
systemctl list-timers

7. 系统重启 / 电源管理

  • 自动休眠
  • 看门狗
  • 云服务器被回收

查看:

last reboot
uptime

四、资源限制

8. ulimit 限制

如:

  • 打开文件数
  • 进程数
  • CPU 时间

查看:

ulimit -a

五、快速自查清单 ✅

请补充以下信息,我可以更精确判断:

  1. 什么进程?(Python / Java / Docker / 自建服务?)
  2. 怎么启动的?(终端 / systemd / Docker)
  3. 有没有日志或退出码?
  4. 是“立刻停”还是“运行一段时间停”?

如果你愿意,可以把下面命令的输出贴出来:

journalctl -xe
dmesg | tail

0 踩