Подтвердить что ты не робот

Уничтожение несуществующего процесса в системе UNIX

У меня в моей системе есть несуществующий процесс:

abc      22093 19508  0 23:29 pts/4    00:00:00 grep ProcA
abc      31756     1  0 Dec08 ?        00:00:00 [ProcA_my_collect] <defunct>

Как я могу убить вышеупомянутый процесс без перезагрузки машины? Я пробовал с

kill -9 31756
sudo kill -9 31756
4b9b3361

Ответ 1

Вы убили процесс, но мертвый процесс не исчезает из таблицы процессов, пока его родительский процесс не выполнит задачу, называемую "пожинать" (по существу, вызывая wait(3) для этого процесса, чтобы прочитать его статус выхода). Мертвые процессы, которые не были получены, называются " зомби-процессы.

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

Ответ 2

Проверяли ли вы дочерний процесс, который, возможно, должен быть убит первым? Иногда замятие вверх по линии... Попробуйте ps -ef --forest

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

Ответ 3

Если kill -9 не может убить процесс, причиной почти всегда является ошибка драйвера или операционной системы.

Процесс init принял этот процесс, но он не может его извлечь. То есть: когда init вызывает wait (2), этот процесс не возвращается. Одной из основных целей init является пожинание мертвых детей-сирот, поэтому проблема заключается не в том, что его родитель умер до того, как он был пожинать. Думайте: В противном случае, кто получает результаты nohup'd процесса после выхода из системы?

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

Ответ 4

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

FWIW, я видел это совсем немного в ядре SCO Openserver, который я использовал для управления. Тяжелое многопользовательское использование и низкие системные ресурсы, но это нисколько не повредило. Меня просто раздражало.:)

Ответ 5

Процесс, вероятно, зависает, например. игнорируя сигналы типа SIGPIPE, проверьте strace -p <pid> что здесь происходит.