«Есть 1 процесс зомби»

33

Это сообщение появляется при входе на мою машину ...

There is 1 zombie process.
  • Что это говорит мне?
  • Это то, что я должен беспокоиться?
  • Если да, то что мне делать и как?
Джон Ми
источник
20
У вас есть двуствольное ружье поблизости?
EEAA

Ответы:

28

Не о чем беспокоиться

Живой мертвец

В операционных системах Unix процесс-зомби или несуществующий процесс - это процесс, который завершил выполнение, но все еще имеет запись в таблице процессов, позволяющую процессу, запустившему его, прочитать свое состояние завершения. В красочной метафоре термина дочерний процесс умер, но еще не был пожнен.

Когда процесс завершается, вся память и ресурсы, связанные с ним, освобождаются, чтобы их могли использовать другие процессы. Однако запись процесса в таблице процессов остается. Родителю отправляется сигнал SIGCHLD, указывающий, что ребенок умер; Обработчик этого сигнала обычно выполняет системный вызов ожидания, который считывает состояние выхода и удаляет зомби. Идентификатор процесса зомби и запись в таблице процессов могут быть использованы повторно. Однако, если родитель игнорирует SIGCHLD, зомби останется в таблице процессов. В некоторых ситуациях это может быть желательно, например, если родитель создает другой дочерний процесс, он гарантирует, что ему не будет присвоен тот же идентификатор процесса.

Источник: http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process

Марк-Андре Р.
источник
Спасибо Марк хорошее описание; Теперь, как мне найти его, решить, сохранить ли его, а если нет, то удалить его (и сообщение).
Джон Ми
Обычно они срабатывают сами, если это действительно вас раздражает, вы можете перезагрузить компьютер или найти PID родительского процесса и убить его, но это зависит от того, что оставляет зомби, что может быть проблематично для уничтожения этого конкретного процесса.
Марк-Андре Р.
2
Не забудьте принять мой ответ, если это реальный ответ на ваш вопрос;) спасибо!
Марк-Андре Р.
10
Извините, вы ответили только на первую часть своего вопроса. До сих пор неясно, стоит ли беспокоиться об этом и что с этим делать.
0

Как объясняется в принятом ответе, у вас есть процесс, который завершил выполнение, но все еще находится в таблице процессов: https://serverfault.com/a/390216/48449

Это не должно причинять вреда, если это всего лишь один процесс, но все же не должно происходить. Если их слишком много и вы не перезагружаете и не перезапускаете вызывающий родительский процесс, который их производит, вы можете достичь максимально допустимого числа процессов и вызвать серьезные проблемы.

Чтобы выяснить, является ли беспокойство уместным и к какому другому процессу относится зомби, это работает для меня:

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

При необходимости увеличьте количество строк контекста, чтобы узнать о родительском процессе, в идеале исправьте этот процесс, чтобы он «пожинал» свои завершенные подпроцессы.

exic
источник