温馨提示×

ubuntu僵尸进程算故障吗

小樊
46
2026-09-25 11:31:48
栏目: 智能运维

在 Ubuntu(以及其它 Linux 系统)里,僵尸进程本身不一定算“故障”,要看具体情况。

1. 什么是僵尸进程

僵尸进程(zombie / defunct)是:

  • 子进程已经结束执行
  • 但父进程还没有调用 wait() / waitpid() 来回收它的退出状态

此时进程在进程表里还留一个条目,不占 CPU、不占内存,只占用一个 PID 和进程表项。

2. 少量僵尸进程:通常不算故障

  • 短时间内出现 1~几个僵尸进程,很常见
  • 父进程稍后会回收,或父进程退出后由 init / systemd 接管并回收
  • 这种情况不算系统故障

3. 大量 / 长期存在的僵尸进程:算异常或故障迹象

如果出现以下情况,通常说明有问题:

  • 僵尸进程长时间不消失
  • 僵尸进程数量持续增长
  • 导致 PID 耗尽(fork: resource temporarily unavailable)
  • 父进程是重要服务(如 Java、Python 服务、docker 相关进程)

常见原因:

  • 父进程写错了,没回收子进程
  • 父进程卡死 / 死循环
  • 服务框架(如 shell 脚本、supervisor)异常

这种属于故障或 bug。

4. 如何处理

查看僵尸进程:

ps aux | grep Z

或

top
# 看 Tasks: 里的 zombie 数

解决方式:

  • 找到父进程:ps -o ppid= -p <僵尸PID>
  • 重启或修复父进程
  • 若父进程无用,可杀父进程(谨慎)
  • 不要直接 kill -9 僵尸进程(没用)

5. 总结

情况 是否算故障
偶尔少量僵尸 否
长期存在 是(父进程问题)
大量增长 是(严重)

如果你愿意,可以贴一下 ps aux 或 top 的输出,我可以帮你判断是不是故障。

0 踩