19

Поскольку я новичок в системах Linux/Unix и просто читаю о процессах зомби, у меня есть один вопрос. У меня есть 10 из них прямо сейчас. Нужно ли их убивать и если да, то почему? Это нагрузка на мою систему?

592 processes: 581 sleeping, 1 running, 10 zombie, 0 stopped

4 ответа4

28

Вы не можете убить зомби, он уже мертв.

Ресурсы этого процесса бесплатны и доступны для других процессов. Остается только запись в таблице процессов. Это не влияет на производительность, не волнуйтесь.

16

Что это за зомби-процессы, которые появляются в пс? Я убиваю их, но они не уходят!

Зомби - это мертвые процессы. Вы не можете убить мертвых. Все процессы в конечном итоге умирают, и когда они это делают, они становятся зомби. Они почти не потребляют ресурсов, чего и следовало ожидать, потому что они мертвы! Причина зомби в том, что родитель (процесс) зомби может получить информацию о состоянии выхода зомби и статистику использования ресурсов. Родитель сообщает операционной системе, что зомби больше не нужен, используя один из системных вызовов wait ().

Когда процесс умирает, все его дочерние процессы становятся дочерними для процесса номер 1, который является процессом init. Иници всегда ждет смерти детей, чтобы они не оставались зомби.

Если у вас есть процессы зомби, это означает, что их родители не ожидали этих зомби (посмотрите на PPID, отображаемый ps -l). У вас есть три варианта: исправить родительский процесс (заставить его ждать); убить родителя; или жить с этим. Помните, что жить с этим не так сложно, потому что зомби занимают чуть больше одной дополнительной строки в выводе ps.

Источник: http://www.linuxsa.org.au/tips/zombies.html

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

7

Вам не нужно убивать их.

Чтобы построить некоторое базовое понимание:

Каждый процесс является дочерним по отношению к родительскому процессу (за исключением процесса init, но нам не нужно об этом беспокоиться).

Когда дочерний процесс завершает выполнение, он может по-прежнему содержать данные, к которым родительский процесс хочет получить доступ, обычно это код выхода, который описывает результат дочернего процесса (удалось ли это? Это ошибка? Какой был код ошибки?).

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

3

Этот процесс не нужно убивать.

На всякий случай, если вы все-таки хотите убить его (по какой-либо причине), убедитесь, что вы стреляете по голове, вот полезная команда:

kill -HUP `ps -A -ostat,ppid | grep -e '^[Zz]' | awk '{print $2}'`

С https://www.erianna.com/kill-a-linux-zombie-process

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .