Чтение записи из Elav Я вспомнил, что на форуме кто-то просил о помощи, так как их система работала медленно, а некоторые решения касались процессов.
Основные состояния процессов в Linux:
Спящий (S) : Процессы, ожидающие своей очереди для выполнения.
Бег (R) : Запущенные процессы.
Ожидание (D) : Процессы, ожидающие завершения операции входа / выхода.
Зомби (Z) : Процессы, которые завершились, но продолжают отображаться в таблице процессов. Они могут быть вызваны ошибками программирования и могут быть признаком медленной или проблемной системы.
Процесс-зомби - это процесс, который никогда не получал сигнал от родительского процесса, который его создал, дочерний процесс - это процесс, который берет свое начало в процессе более высокого уровня, известном как родительский процесс, который отвечает за отправку сигналов дочерним процессам, созданным с помощью это означает, что срок его жизни закончился.
Они могут быть вызваны ошибками программирования и могут быть признаком медленной или проблемной системы. Такая ситуация обычно возникает также потому, что разработчик не предусмотрел некоторую конфигурацию.
В Википедии можно читать далее об этих процессах.
Выполняя верхнюю команду, мы можем видеть в реальном времени процессы, которые выполняются в системе, и она укажет, есть ли они в состоянии зомби, но не укажет, какой именно.
Чтобы увидеть все процессы, введите в терминале: ps aux, и видеть только зомби: пс -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'
альф @ Альф ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'
Z 1945
Если при перечислении процессов один из них отображается со статусом Z, это означает, что это зомби, что, в свою очередь, означает, что приложение не решено должным образом или имеет ошибки, зная, что его PID можно удалить, выполнив в терминале команду, аналогичную в этом примере:
альф @ Альф ~ $ kill -9 1945
Когда у вас много процессов-зомби или хотя бы более одного, вы можете использовать следующую команду, которая их убивает, она работает только для этого, если вы запустите ее без процессов-зомби, ничего не произойдет:
альф @ Альф ~ $ sudo kill -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{print $ 2}' ''
привет
🙁
Спасибо, очень хороший вклад, я собираюсь сохранить команды для периодических проверок.
Спасибо, хорошая статья.
Несколько уточнений по вашей статье:
Термин «процесс зомби» технически неуместен, и тем из нас, кто имеет небольшой опыт работы с GNU / Linux, следует избегать его использования, поскольку сам по себе процесс не запущен, а является лишь ссылкой на процесс, который больше не существует в системе. и он не раскрыл свой идентификатор.
«Процесс-зомби» фактически является записью в таблице сопоставления идентификатора процесса (дескриптора процесса), поэтому он не потребляет ресурсы сверх нескольких байтов памяти, которые система использует для отслеживания таблицы процессов.
Единственная проблема, которая может возникнуть с дескрипторами реестра-призраков (или зомби), заключается в том, что если они появляются слишком быстро, они теоретически могут занять всю таблицу распределения дескрипторов процесса, оставляя систему без места для новых записей, поэтому потенциально будет невозможно запустить новые программы, которые записывают свои процессы, в конечном итоге вешают машину.
Однако это практически невозможно, поскольку в 32-битных системах имеется 32767 64 пробелов для регистрации процессов (редко или никогда не используемых), а в XNUMX-битных системах вдвое больше.
Единственный способ заставить систему зависнуть с плохо удаленными мертвыми процессами - это создать процессы и быстро их убить без должной очистки дескриптора процесса (то есть создания «зомби-процессов»), но, давайте посмотрим правде в глаза, если кто-то захочет повесить system есть гораздо более прямые пути, чем это. быстро начать создавать новые процессы в геометрической прогрессии, которые заклинивают систему и вешают ее; один из способов добиться этого с помощью вилочной бомбы:
: () {: |: &};:
Вы можете сделать систему относительно устойчивой к форк-бомбе, правильно настроив /etc/security/limits.conf, хотя следует учитывать, что чем больше мы ограничиваем возможность создания новых процессов, тем меньше мы сможем запускать приложений. одновременно в нашей системе.Однако это действенный инструмент для всех параноидальных системных администраторов, которые хотят иметь очень точный контроль над своей системой!
В этой статье есть полезная информация о недопустимых дескрипторах процесса:
http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
И в этом есть четкое объяснение того, как работает вилочная бомба: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work
Salu2
msx: «Термин« процесс зомби »технически неуместен, и те из нас, кто имеет небольшой опыт работы с GNU / Linux, должны избегать его использования…» Ха-ха-ха. Есть только нечто большее, чем ваша гордость: ваш безвкусица. Эй, это дурной вкус то, что вы сделали, если вы хотите прочитать лекцию, получить ее на факультете или завести собственный блог и написать то, что вы хотите, но приходить сюда, чтобы исправить квартиру до хорошего, Альф действительно дурной вкус .
Правда показался мне довольно интересным комментарием. Намного больше, чем сообщение
спасибо очень интересно.
отличная статья спасибо
MSX
«Термин« процесс зомби »технически неуместен, и тем из нас, кто имеет небольшой опыт работы с GNU / Linux, следует избегать его использования»
Придется уведомить разработчиков, так как, как вы увидите, также используется термин зомби, там я прочитал его на консоли.
привет
Поздравляю, очень хорошая статья, у меня всегда были сомнения, что это PZ, но у меня никогда не было времени исследовать, теперь я перехожу на страницу и нахожу ответ, спасибо …….
В KDE с системой управления + побег действия прекращаются, и мы можем быстро убить этих зомби.
Исправление, это ЗОМБИ, а не процесс ЗОМБИ
Зомби на английском
Зомби по испанский
Роскошь, спасибо!.
Во-первых, термин «зомби-процесс» кажется совершенно правильным. Также термин наименее важен.
Дело в том, что, как указывает msx, и та же википедия (я читал статью) зомби-процесс действительно мертв.
«Когда процесс завершается, вся его память и связанные с ней ресурсы разыменовываются, чтобы они могли использоваться другими процессами. В любом случае запись процесса в таблице процессов все равно остается »
То есть процесс больше не занимает системные ресурсы, поэтому нагрузка на систему минимальна, как объясняет msx.
Однако единственное, что у него есть, это недопустимая запись в таблице процессов ... которая, если их тысячи, возможно, это будет нагрузка (в конце концов, процессор должен прочитать таблицу процессов, и он прочитал бы много бесполезной информации) в дополнение к отражению плохой практики программирования (кто-то создает плохо сделанные приложения).
Но само по себе объяснение сообщения не совсем правильное, и правильным будет то, что дано msx.