Лучший способ убить процессы состояния Zombie и D в Linux

Каков наилучший способ убить процессы Zombie и D состояния процесса с помощью одной команды.

5 ответов

Решение

Двойное нажатие.

Собственно, перезагрузись. Нет реального способа легко избавиться от зомби, но на самом деле нет причин, потому что зомби не занимает ресурсы на компьютере; это осиротевшая запись в таблице процессов. Инициат должен собрать его, но с процессом что-то пошло не так. http://en.wikipedia.org/wiki/Zombie_process

Возможно, вы спрашиваете, потому что есть более серьезная проблема... вы получаете кучу зомби, бродящих по вашей таблице процессов? Это обычно означает ошибку в программе или проблему с конфигурацией. Вы не должны иметь огромное количество зомби в системе. Один или два, я не волнуюсь. Если у вас их пятьдесят от Apache или другого демона, у вас, вероятно, есть проблема. Но это не имеет прямого отношения к вашему вопросу...

/sbin/reboot

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

Если ppid все еще существует, то прекращение, которое может часто убирать порожденных зомби.

Вы не должны убивать процессы в непрерывном режиме сна - обычно это означает, что они связаны с вводом / выводом, но IIRC это также может происходить во время блокировки чтения, например, из сетевого сокета.

Ошибки в базовой файловой системе или дисках могут привести к процессам, связанным с вводом / выводом. В этом случае попытайтесь "размонтировать -f" файловую систему, от которой они зависят - это прервет все открытые ожидающие запросы ввода-вывода.

Большинство ответов посвящено зомби, это нацелено наD state

Процессы, которые застряли в «непрерывном сне», отображаются в списке процессов как находящиеся в состоянии D.

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

Единственные исправления — просто убить процесс илиumount -f /mnt/sourceотмонтировать диск, и тогда процесс увидит, что он пропал, и завершится с ошибкой. Очевидно, что действие ввода-вывода также будет неполным, вероятно, с частичной копией файла.

Связанный,tarиrsyncПроцесс может находиться в этом состоянии при работе через SSH — он буквально блокируется в ожидании, пока сеть его догонит. Дело в том, что состояние D не обязательно плохое, поэтому уничтожение их всех может быть не идеальным решением.

Следующая строка убьет всех зомби.

      ps -xal | grep defunct | awk '{ system (" kill -9 " $4 ) }'
Другие вопросы по тегам