if ($answer_counter == 1): ?>
endif; ?>
Зомби - это DEAD-процессы. Они не могут быть "убиты" (вы не можете убить DEAD). Все процессы в конечном счете умирают, и когда они делают, они становятся зомби. Они не потребляют почти никаких ресурсов, чего можно ожидать, потому что они мертвы! Причина зомби в том, что родитель (процесс) зомби может получить статус выхода зомби и статистику использования ресурсов. Родитель сигнализирует операционной системе, что он больше не нуждается в зомби, используя один из системных вызовов wait ().
Когда процесс умирает, его дочерние процессы становятся потомками процесса номер 1, который является процессом init. Init - это "всегда", ожидая, что дети умрут, чтобы они не оставались зомби.
Если у вас есть процессы с зомби, это означает, что их зомби не ждут их родители (посмотрите на PPID, отображаемый ps -l
). У вас есть три варианта: исправить родительский процесс (заставить его подождать); убить родителя; или жить с ним. Помните, что жить с ним не так сложно, потому что зомби занимают не более одной дополнительной строки на выходе ps.
Зомби могут быть идентифицированы на выходе команды Unix ps наличием "Z" в столбце STAT. Зомби, которые существуют более чем на короткий период времени, обычно указывают на ошибку в родительской программе. Как и в случае других утечек, присутствие нескольких зомби само по себе не вызывает беспокойства, но может указывать на проблему, которая может стать серьезной при более тяжелых нагрузках.
Чтобы удалить зомби из системы, сигнал SIGCHLD может быть отправлен родителю вручную, используя команду kill. Если родительский процесс все еще отказывается пожинать зомби, следующим шагом будет удаление родительского процесса. Когда процесс теряет родителя, init становится его новым родителем. Init периодически выполняет системный вызов wait, чтобы пожинать всех зомби с init как родительский.
Существуют также сиротские процессы , которые являются компьютерным процессом, родительский процесс которого завершен или завершен.
Процесс может стать сиротой во время удаленного вызова, когда клиентский процесс вылетает после запроса сервера.
Сироты тратят ресурсы сервера и могут потенциально оставить сервер в беде (это самая большая разница в ресурсах между зомби и сиротами (кроме случаев, когда вы видите какой-то сиротский зомби-фильм). Однако есть несколько решений проблемы с сиротским процессом: р>
-
Истребление - наиболее часто используемый метод; в этом случае сиротский процесс убит.
-
Реинкарнация - это метод, при котором машины периодически пытаются найти родителей для любых удаленных вычислений; после чего погибают осиротевшие процессы.
-
Истечение срока - это метод, при котором каждому процессу выделяется определенное количество времени, чтобы закончить, прежде чем быть убитым. Если необходимо, процесс может "запросить" больше времени для завершения до истечения отведенного времени.
Процесс можно также осиротеть на том же компьютере, что и его родительский процесс. В UNIX-подобной операционной системе любой сиротский процесс будет немедленно принят специальным системным процессом "init". Эта операция называется переустановкой и происходит автоматически. Несмотря на то, что технически процесс имеет "init" процесс как его родительский элемент, он по-прежнему называется сиротским процессом, поскольку процесс, изначально создавший его, больше не существует.
Дополнительная информация:
Ссылка
Ссылка
Ссылка
Как определить и убить процесс подвески, когда система зависает и медленно реагирует на ввод пользователя?
Убийство запуск процесса на машине Ubuntu удаленно с Windows-машины, находящейся в локальной сети