“有一个僵尸进程”


33

当我登录到我的机器时出现此消息...

There is 1 zombie process.
  • 它告诉我什么?
  • 这是我要担心的吗?
  • 如果是,那我该怎么办,怎么办?

19
您附近有一把双管shot弹枪吗?
EEAA 2012年

Answers:


28

无需担心:

僵尸

在Unix操作系统上,僵尸进程或已解散进程是已完成执行但在进程表中仍具有条目的进程,从而允许启动它的进程读取其退出状态。在该术语的彩色比喻中,子进程已终止,但尚未获得。

当一个进程结束时,与该进程关联的所有内存和资源都将被释放,以便其他进程可以使用它们。但是,仍保留在进程表中的进程条目。向父母发送SIGCHLD信号,指示孩子已经死亡;该信号的处理程序通常将执行wait系统调用,该系统调用将读取退出状态并删除僵尸。然后可以重用僵尸的进程ID和进程表中的条目。但是,如果父母忽略了SIGCHLD,则僵尸将留在进程表中。在某些情况下,这可能是理想的,例如,如果父级创建另一个子进程,则它会确保不会为其分配相同的进程ID。

来源:http : //wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process


谢谢马克的良好描述;现在,我将如何找到它,确定是否保留它,如果没有,请删除它(和消息)。
约翰·米

通常,它们会自行消失,如果这确实使您感到不快,则可以重新启动或找到父进程PID并杀死它,但要取决于留下僵尸的原因,这可能会导致杀死该特定进程。
Marc-Andre R.

2
如果这是对您问题的真正答案,请不要忘记接受我的回答;)谢谢!
Marc-Andre R.

10
抱歉,您仅回答了他问题的第一部分。尚不清楚是否应该担心它以及该怎么做。

0

如接受的答案中所述,您有一个已完成执行但仍在进程表中的进程:https : //serverfault.com/a/390216/48449

如果这只是一个过程,就不会造成伤害,但仍然不应发生。如果太多,并且您不重新启动或重新启动产生这些事件的父进程,则可能会达到允许的最大进程数,并导致严重问题。

要找出担心是否合适以及僵尸属于哪个其他进程,这对我有用:

ps -elf --forest | grep -C5 '<[d]efunct>'

如有必要,请增加上下文行的数量以查找有关父流程的信息,理想情况下,应修复该流程以使其“获得”其结束的子流程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.