为什么启动时会创建僵尸进程?

为什么启动时会创建僵尸进程?

Ubuntu 13.04。

最近,僵尸开始出现。

我的流程是:

PROCESS       CPU         INFORMATION          

chrome            65%     Surf the web
calculator        10%     Calculate operations
<zombieunknown>    0%     <unknown>
<deadprocess>      0%     <defunct>

那么它们是怎么出现的呢?这是在启动时记录的,当时只有 Chrome 和计算器在运行。

提前致谢。

答案1

在 UNIX 世界中,开发人员有时使用该术语来指已死亡但尚未将其进程表条目返回给系统的程序进程。

当进程执行完毕后,它会向其父进程报告一个退出状态。由于这最后一点信息,该进程将作为僵尸进程保留在操作系统的进程表中,表示不会安排它进一步执行,但无法完全删除它(并且其进程 ID 无法重用),直到确定不再需要退出状态为止。

当子进程退出时,父进程将收到一个SIGCHLD信号,表明其子进程之一已完成执行;此时父进程通常会调用 wait() 系统调用。该调用将向父进程提供子进程的退出状态,并导致子进程被回收,或从进程表中删除。

保留僵尸进程背后的想法是保留有关进程终止的适当数据结构,以防父进程通过等待产生兴趣。

您无法杀死僵尸进程,因为它们已经死了。但是,如果您有太多僵尸进程,请杀死父进程或重新启动服务。

您可以使用从上述任一个命令获取的 PID 来杀死僵尸进程。

kill -9 <PID_Number>

来源:Mel Kham

相关内容