Как уничтожить процессы-зомби в Ubuntu 18.04 LTS

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

Просмотр процессов-зомби

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

  • Через графический интерфейс пользователя
  • Через командную строку

Через GUI

Для графического просмотра любых процессов-зомби, работающих системе, откройте утилиту System Monitor через Тире Ubuntu. В следующем снимке экрана моего Системного монитора можно просмотреть это существует два зомби, работающие на моей системе. Также возможно, что количество процессов-зомби в Вашей системе могло бы быть меньше или больше, чем те работа моей.

Через командную строку

Главная команда отображает подробное представление процессов, работающих на Вашей системе наряду с памятью и ресурсами ЦП, которые они используют. Это также дает Вам информацию о любых процессах-зомби, работающих на Вашей системе. Откройте Terminal путем нажатия Ctrl+Alt+T и затем введите вершину. Я получил следующий вывод после выполнения этой команды.

Вершина $

Вы видите во второй строке, что существует 1 процесс-зомби, работающий на моей системе.

Если Вы хотите более подробную информацию о процессе-зомби, используйте следующую команду:

$ ps axo stat,ppid,pid,comm | grep -w defunct

Эта команда даст Вам состояние, порожденное, идентификатор процесса, программа, которая выполняет процесс-зомби (фиктивная программа именем 'зомби' в моей системе). Более не существующий флаг говорит Вам, что это - мертвый, процесс-зомби.

Уничтожение процесса-зомби

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

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

Когда родительский процесс не был в состоянии назвать ожидание () функцией автоматически, мы должны вручную предупредить, чтобы родительский процесс выполнил функцию ожидания на всех своих детях, таким образом, те с полным состоянием могут быть призваны обратно. Мы можем сделать это путем выполнения команды SIGCHLD. Когда это не работает, мы можем вручную уничтожить родительский процесс так, чтобы все его дети зомби были также уничтожены, освободив идентификаторы процесса для новых процессов.

Можно уничтожить процессы-зомби через следующие пути:

  • Через графический интерфейс пользователя
  • Через командную строку

Через GUI

Можно уничтожить процесс-зомби графически через Утилиту Системного монитора следующим образом:

  1. Откройте утилиту System Monitor через Тире Ubuntu.
  2. Ищите термин Зомби через Кнопку поиска.
  3. Выберите процесс-зомби, щелкните правой кнопкой и затем избранное Уничтожение из меню.

Процесс-зомби будет уничтожен от Вашей системы.

Через командную строку

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

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

$ kill -s SIGCHLD PID

Эта команда не может работать в нескольких случаях не, все родительские процессы программируются правильно в проверке порядка после дочерних процессов. В этом случае можно уничтожить родительский процесс посредством следующей команды:

$ sudo kill -9 3376

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

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

Комментарии