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

Читання запису з елав Я згадав, що на форумі хтось звертався за допомогою, оскільки їх система працювала повільно, деякі рішення були зосереджені на процесах.

Основними станами процесів у Linux є:
Сплячий (S) : Процеси, які чекають своєї черги на виконання.
Біг (R) : Запущені процеси.
Очікування (D) : Процеси, що очікують завершення операції входу / виходу.
Зомбі (Z) : Процеси, які закінчились, але продовжують відображатися в таблиці процесів. Вони можуть бути спричинені помилками програмування та можуть бути симптомом повільної роботи або проблеми, що спричиняє проблеми.

Процес зомбі - це той, який ніколи не отримував сигнал від батьківського процесу, який його створив, дочірній процес - це той, що бере свій початок у процесі вищого рівня, відомого як батьківський процес, який відповідає за передачу сигналів дочірнім процесам, генерованим це означає, що їх тривалість життя закінчилася.

Вони можуть бути спричинені помилками програмування та можуть бути симптомом роботи повільної системи чи системи, що викликає проблеми. Зазвичай така ситуація трапляється ще й тому, що розробник не передбачав певної конфігурації.

У Вікіпедії ви можете читати більше про ці процеси.

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

процесу

Щоб переглянути всі процеси, введіть у терміналі: ps auxі бачити лише зомбі: ps -el | grep 'Z'o ps -A -стат, ppid, pid, cmd | grep -e '^ [Zz]'

alf @ Alf ~ $ ps -A -стат, ppid, pid, cmd | grep -e '^ [Zz]'

Z 1945

Якщо при переліку процесів один з'являється зі статусом Z, це означає, що це зомбі, що, у свою чергу, означає, що додаток погано вирішено або має помилки, знаючи, що його PID можна усунути, виконавши команду, подібну до, у терміналі, у цьому прикладі: 

alf @ Alf ~ $ kill -9 1945

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

alf @ Alf ~ $ sudo kill -HUP `ps -A -стат, 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-розрядної системи.

    Єдиний спосіб зробити збій системи з погано видаленими мертвими процесами - створити процеси та швидко їх убити, не правильно очищаючи дескриптор процесу (тобто створюючи "зомбі-процеси"), але, погодьмося, якщо хтось хоче повісити У системі є набагато більш прямі шляхи, ніж це. розпочати швидке створення нових процесів експоненціальним способом, що заклинює систему і зависає; один із способів досягти цього за допомогою вилочної бомби:

    : () {: |: &};:

    Ви можете зробити систему відносно стійкою до вилки-бомби, правильно налаштувавши /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.   Дощ - сказав він

    Виправлення, це ZOMBIE, а не ZOMBIE процес
    Zombie англійською мовою
    Зомбі іспанською мовою

  11.   Елінкс - сказав він

    Розкіш, дякую!

  12.   Роберто - сказав він

    По-перше, термін зомбі-процес здається абсолютно правильним. Також термін є найменш важливим.
    Справа в тому, що як вказує msx, і та сама вікіпедія (я читав статтю), процес зомбі справді мертвий.
    «Коли процес закінчується, вся його пам’ять і пов’язані з ним ресурси розмежовуються, щоб їх могли використовувати інші процеси. У будь-якому випадку, запис процесу в таблиці процесів все ще залишається »
    Тобто процес більше не забирає системні ресурси, тому навантаження на систему мінімальне, як пояснює msx.
    Однак єдине, що у нього є, це невірний запис у таблиці процесів ... що, якщо їх тисячі, можливо, це було б навантаженням (зрештою, процесор повинен прочитати таблицю процесів, і він прочитав би багато марної інформації), крім того, що відображає погану практику програмування (хтось робить погано зроблені програми).
    Але саме по собі пояснення допису не настільки правильне, і правильним буде те, що дано msx.