温馨提示×

ubuntu僵尸进程占资源吗

小樊
47
2026-10-04 05:20:17
栏目: 智能运维

在 Ubuntu(以及其它 Linux 系统)上,僵尸进程(zombie / defunct 进程)本身基本不占用常规系统资源,但有一些细节和潜在风险需要注意。


1. 僵尸进程“占什么”

僵尸进程是已经结束运行、但父进程还没回收它(wait)的进程。

它不占用:

  • ❌ CPU
  • ❌ 内存(代码段、堆、栈都已释放)
  • ❌ 文件描述符(基本已关闭)

它仍然占用一点点东西:

  • ✅ 一个 进程号(PID)
  • ✅ 进程表(task_struct)中的一个条目
  • ✅ 退出码、少量状态信息

也就是说:

僵尸进程 ≈ “尸体”,CPU 和内存都不干活也不吃资源,只是“占了个名额”


2. 为什么僵尸进程“看起来危险”

虽然单个僵尸进程无害,但:

⚠ 大量僵尸进程的问题

  • 进程号(PID)有上限(通常几十万)
  • 如果父进程一直不回收 → PID 耗尽
  • 新进程无法创建(fork: resource temporarily unavailable)

常见于:

  • 写崩的服务(父进程死循环、忘了 wait)
  • 某些守护进程 bug

3. 怎么看僵尸进程

ps aux | grep Z

或

top
# 看 Tasks:  xx total,  x zombie

4. 怎么处理僵尸进程

不能直接 kill 僵尸进程(已经死了)

正确做法:

  1. 找到父进程
ps -o ppid= -p <僵尸PID>
  1. 重启或修复父进程
kill -TERM <父PID>

或

systemctl restart <服务>

如果父进程是 init(PID 1),一般会自动回收。


5. 一句话总结

僵尸进程不占 CPU、不占内存,但占 PID;少量无害,大量会出事。

如果你愿意,可以把 ps 输出贴出来,我可以帮你判断是不是真有问题。

0 踩