Kill -9 не убивает процесс в Ubuntu

1

Этот процесс помечен как <defunct>и kill -9не убивает его. Что я могу сделать? Почему этот процесс не может быть убит?

Саймон Шихан
источник
Вы не можете убить его, потому что он уже мертв. Вот почему это называется зомби. («несуществующий» гораздо менее описательный)
Уильям Перселл

Ответы:

3

Этот процесс называется процессом зомби . Команда Kill не влияет на процессы зомби. Технически они мертвы, и вы видите их только потому, что у них все еще есть запись в таблице процессов.

Чтобы удалить зомби из системы, SIGCHLDсигнал можно отправить родителю вручную, используя команду kill. Если родительский процесс по-прежнему отказывается пожинать зомби, следующим шагом будет удаление родительского процесса. Когда процесс теряет своего родителя, init становится его новым родителем. Init периодически выполняет системный вызов wait, чтобы пожинать зомби с init в качестве родителя.


источник
2

Несуществующий означает, что это зомби-процесс - он на самом деле не работает, он просто ожидает вызова родительского процесса, waitчтобы получить возвращаемое значение.

wait Функция может быть использована для чтения номера сигнала, который убил процесс зомби, так что это на самом деле правильное поведение.

Чтобы избавиться от зомби, вы можете: - убить родительский процесс (возможно, консоль, где вы ввели свою команду) - вызвать waitродительский процесс - игнорировать SIGCHLD в родительском процессе, если вы никогда не вызываетеwait

Петр Цирхоффер
источник