Зомбі в linux, становлення в it

Думаю не помилюся, якщо припущу що ви так само як і я іноді задавалися питанням при виведенні комадно терміналу ps ax, а саме Z процеси.

2851. Z 0:00 [gksu]

Що ж це все-таки за зомбі процеси такі? Причому при спробі їх вбити командою kill вони залишаються такими ж неушкодженими. Що ж з ними робити?

У реальності, все не так просто. Точніше просто, але не так як на перший погляд. Справа в тому що, зомбі, це вже знищені процеси. Самі розумієте що нічого не вийде вбити двічі, безглуздо вбивати то що вже мертве.

Для цих процесів вже була виконана команда kill, вбити. Тільки ось з різних причин, дана команда не змогла завершиться, нормальним завершенням процесу. Власне, тут виходить неоднозначна ситуація, формально якщо дивитися, то процес продовжує існувати, а ось ресурси які відведені під нього, в реальності звільняються.

Сама причина існування зомбі процесів полягає в тому що батьківський процес може зажадати статус завершення або статистику використання ресурсів породженого зомбі процесу. У тому випадку якщо батьківський процес більше не потребує породженому зомбі-процесі, то в цьому випадку він подає сигнал про це, операційній системі за допомогою виклику системної функції wait.

У випадку з нормальною ситуацією завершення процесу, все його породжені процеси стають спадкоємцями init, PID якого одиниця. Init завжди очікує завершення всіх породжених процесів, це як раз і зроблено для того щоб уникнути породження зомбі процесів.

Якщо ж в системі завелися зомбі процеси, тоді це означає що вони не обслуговують батьківські процеси, визначити які ви можете командою ps -lax, в колонці PPID.

0 1000 2851 1639 20 0 0 0 exit Z. 0:00 [gksu]

Що ж Вам робити в цьому випадку? По суті справи варіантів у Вас власне три.
А власне:
1. Виправити батьківський процес
2. Вбити батьківський процес
3. Продовжувати з цим жити.

Що в звичайних ситуаціях не так складно, зомбі зазвичай не заважають самій роботі. Хоча бувають і більш докучливі ситуації.

Це полягає в тому що процеси зомбі блокують записи в таблиці процесів, а цей розмір не нескінченний. У тому випадку якщо стане досягнуто ліміт, програми більш не зможуть створювати дочірні процеси, Ви не зможете потрапити ні в термінал, ні виконати будь-які команди в уже відкритої консолі. Таке у мене раз було. Але це не зовсім звичайна ситуація, не знаю, мені тоді тільки reboot допоміг.

Схожі статті