1

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

2 ответа2

3

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

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

2

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

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

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

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