Зомби-процессы

Чтение записи из 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}' ''

привет


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   правильный сказал

    🙁

  2.   Оскар сказал

    Спасибо, очень хороший вклад, я собираюсь сохранить команды для периодических проверок.

  3.   Джош сказал

    Спасибо, хорошая статья.

  4.   MSX сказал

    Несколько уточнений по вашей статье:

    Термин «процесс зомби» технически неуместен, и тем из нас, кто имеет небольшой опыт работы с 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

    1.    Джотаэль сказал

      msx: «Термин« процесс зомби »технически неуместен, и те из нас, кто имеет небольшой опыт работы с GNU / Linux, должны избегать его использования…» Ха-ха-ха. Есть только нечто большее, чем ваша гордость: ваш безвкусица. Эй, это дурной вкус то, что вы сделали, если вы хотите прочитать лекцию, получить ее на факультете или завести собственный блог и написать то, что вы хотите, но приходить сюда, чтобы исправить квартиру до хорошего, Альф действительно дурной вкус .

      1.    Фернандо Рохас сказал

        Правда показался мне довольно интересным комментарием. Намного больше, чем сообщение

  5.   Платонов сказал

    спасибо очень интересно.

  6.   Ротс87 сказал

    отличная статья спасибо

  7.   Alf сказал

    MSX
    «Термин« процесс зомби »технически неуместен, и тем из нас, кто имеет небольшой опыт работы с GNU / Linux, следует избегать его использования»

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

    привет

  8.   Ситукс сказал

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

  9.   Truko22 сказал

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

  10.   дождь сказал

    Исправление, это ЗОМБИ, а не процесс ЗОМБИ
    Зомби на английском
    Зомби по испанский

  11.   Элинкс сказал

    Роскошь, спасибо!.

  12.   Роберто сказал

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