Главная
|
История записей
Поиск:
Можно читать на разных языках:
####  2021-10-29
Как найти и убить зомби процесс в Linux
>Краткая информация: это быстрый совет по обнаружению зомби-процессов в Linux и их последующему уничтожению. Вы также узнаете кое-что о процессах и зомби-процессах. # Прежде чем вы узнаете о процессе зомби, позвольте мне вспомнить, что такое процесс в Linux. В двух словах, процесс - это запущенный экземпляр программы в процессе выполнения. Это может быть передний план (интерактивный процесс) или фон (не интерактивный или автоматический процесс). Это может быть родительский (создатель других процессов во время выполнения) или дочерний (процесс, созданный другими). В Linux, за исключением первого процесса **init** (или systemd) с PID 0, каждый другой процесс имеет родительский процесс. У процессов также есть свои дочерние процессы. Не верите мне? Используйте **pstree** команду в терминале, чтобы просмотреть дерево процессов, чтобы увидеть «генеалогическое древо» процессов вашей системы. # Что такое зомби-процесс в Linux? Когда дочерний процесс умирает, родительский процесс информируется, чтобы он мог выполнить некоторую очистку, например, освободить память и т. Д. Однако дочерний процесс переходит в состояние зомби, если родительский процесс не знает о его смерти. Для родителя дочерний процесс все еще существует, но дочерний процесс фактически мертв. Так создаются и остаются в системе зомби-процессы (также известные как несуществующие процессы). Вот отличный забавный взгляд на зомби-процесс от Turnoff.us:  # Вам действительно нужно беспокоиться о процессах зомби? Здесь важно сказать, что зомби-процессы не так опасны, как может показаться название. Проблема может возникнуть, если ваша система имеет ограниченную оперативную память или слишком много зомби-процессов потребляют оперативную память. Кроме того, для большинства процессов Linux максимальный PID может быть установлен равным 32768. Если нет доступных идентификаторов для других продуктивных задач, ваша система может выйти из строя. Это случается редко, но это возможно, особенно если плохо написанная программа запускает многочисленные зомби-процессы. В таком случае было бы неплохо найти и убить процесс зомби. Как найти зомби-процессы? Процесс в Linux может находиться в одном из следующих состояний: D = непрерывный сон I = холостой ход R = работает S = спящий T = остановлен сигналом управления заданием t = остановлен отладчиком во время трассировки Z = зомби Но где вы можете увидеть процессы и их статус? Один из простых способов - использовать терминал и команду top .  Как вы можете видеть на скриншоте выше, всего 250 задач (или процессов), 1 запущен, 248 процессов спят и 1 находится в состоянии зомби. # Теперь возникает вопрос, как убить зомби-процесс? Как найти и убить зомби-процесс? Можно ли убить зомби-процесс? Зомби-процесс уже мертв. Как убить уже мертвый процесс? В фильмах про зомби вы стреляете зомби в голову или сжигаете ее. Здесь это не вариант. Вы можете сжечь свою систему, чтобы убить процесс зомби, но это неосуществимое решение;) Некоторые предлагают отправить сигнал **SIGCHLD** родительскому процессу. Но, скорее всего, его проигнорируют. Другой способ убить зомби-процесс - убить его родительский процесс. Звучит жестоко, но это единственный надежный способ убить зомби-процессы. Итак, сначала давайте перечислим зомби-процессы, чтобы узнать их ID. Этого можно добиться с помощью такой команды ps в терминале. **ps ux | awk '{if($8=="Z+") print}'** В восьмом столбце выходных данных команды ps ux отображается состояние процесса. Вы просите напечатать все совпадающие строки, в которых состояние процесса равно Z + (что указывает на состояние зомби). После того, как вы определили идентификатор его процесса, давайте получим идентификатор его родительского процесса. **ps -o ppid= -p
** В качестве альтернативы вы можете объединить две вышеуказанные команды следующим образом, где он напрямую предоставляет PID процесса зомби и PID его родительского процесса. **ps -A -ostat,pid,ppid | grep -e '[zZ]'** Здесь вы получаете идентификатор родительского процесса, поэтому, наконец, завершите процесс , набрав в командной строке соответствующий идентификатор процесса, полученный ранее. **kill -9
**  Вы можете проверить, убит ли зомби-процесс, снова запустив команду ps или даже команду top. Поздравляю! Теперь вы знаете, как устранить зомби-процессы. ------------
Назад на сайт
Лента
Телефон
Почта
В закладки
Распечатать