当我运行时,top
我看到一行看起来不太好:
2475 www-data 20 0 0 0 0 Z 1 0.0 0:00.19 apache2 <defunct>
为什么是这个过程<defunct>
以及我应该做什么?
答案1
它是无害的。你可以忽略它。这是一个僵尸进程。的手册页ps
有
Z Defunct ("zombie") process, terminated but not reaped by its parent.
另请参阅维基百科页面僵尸进程。
如果你真的想摆脱它,重新启动 apache2 可能会奏效。重新启动机器肯定会让它消失,但这绝对不是必要的。
这个问题是类似的。 -如何终止父进程为 init 的 <defunct> 进程?
答案2
失效的进程是僵尸进程。 Kill 命令对僵尸进程没有影响。这些可以通过终止父进程来终止。您可以从 PPID 值中找到父级。如果 PPID 为 1(init),即进程因init
父进程不再存在而被调整,则重新启动是唯一的解决方案。
答案3
您可以SIGCHLD
向父进程发送信号而不是杀死它。如果父进程使用此信号注册并wait
调用系统调用,则该已失效的进程将被删除。