Читання запису з елав Я згадав, що на форумі хтось звертався за допомогою, оскільки їх система працювала повільно, деякі рішення були зосереджені на процесах.
Основними станами процесів у 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}' ''
привіт
(І.Е.
Дякую, дуже хороший внесок, я збираюся зберегти команди для періодичних перевірок.
Дякую, приємна стаття.
Кілька роз'яснень стосовно вашої статті:
Термін "процес зомбі" технічно недоречний, і тим з нас, хто має невеликий досвід роботи з 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
msx: «Термін« процес зомбі »технічно недоречний, і тим з нас, хто має невеликий досвід роботи в GNU / Linux, слід уникати його використання ...» Ха-ха-ха. Є лише щось більше від вашої гордості: ваш поганий смак. Ей, те, що ви зробили, - це поганий смак, якщо ви хочете прочитати лекцію, взяти її на факультеті або створити власний щоденник і написати те, що хочете, але приїхати сюди, щоб виправити квартиру на добру Альф, насправді має поганий смак .
Істина здалася мені досить цікавим коментарем. Набагато більше, ніж пост
дякую дуже цікаво.
відмінна стаття дякую
MSX
«Термін« процес зомбі »технічно недоречний, і тим з нас, хто має невеликий досвід роботи в GNU / Linux, слід уникати його використання»
Нам доведеться повідомити розробників, оскільки, як ви побачите, термін зомбі теж використовується, там я прочитав його на консолі.
привіт
Вітаю, дуже хороша стаття, у мене завжди були сумніви, що це PZ, але у мене ніколи не було часу на розслідування, зараз я переходжу на сторінку і натрапляю на відповідь спасибі ......
У KDE із системою управління + система втечі виходять з ладу, і ми можемо швидко вбити цих зомбі.
Виправлення, це ZOMBIE, а не ZOMBIE процес
Zombie англійською мовою
Зомбі іспанською мовою
Розкіш, дякую!
По-перше, термін зомбі-процес здається абсолютно правильним. Також термін є найменш важливим.
Справа в тому, що як вказує msx, і та сама вікіпедія (я читав статтю), процес зомбі справді мертвий.
«Коли процес закінчується, вся його пам’ять і пов’язані з ним ресурси розмежовуються, щоб їх могли використовувати інші процеси. У будь-якому випадку, запис процесу в таблиці процесів все ще залишається »
Тобто процес більше не забирає системні ресурси, тому навантаження на систему мінімальне, як пояснює msx.
Однак єдине, що у нього є, це невірний запис у таблиці процесів ... що, якщо їх тисячі, можливо, це було б навантаженням (зрештою, процесор повинен прочитати таблицю процесів, і він прочитав би багато марної інформації), крім того, що відображає погану практику програмування (хтось робить погано зроблені програми).
Але саме по собі пояснення допису не настільки правильне, і правильним буде те, що дано msx.