Як вбити процеси, невідповідні до вбивства -9


9

Я бачу, що процеси на моєму SGI Altix 450 під керуванням SLES 10.1, здавалося б, припиняють роботу (тобто не забезпечують подальшого виведення в їх журнали протягом години). На даний момент я хочу вбити процес, який ображає, щоб я міг його перезапустити. Зверху видно, що процес знаходиться в (R) стані. Хоча при спробі вбити це нічого не відбувається. Навіть коли я використовую kill -9, він все ще затримується. У цьому випадку що я можу зробити, крім перезавантаження машини?


2
Чи точно вони однакові ідентифікатора процесу? Це не те, що ви вбиваєте процес, і якийсь демон демон відновлює процес з однойменною назвою?
СК.

Відповіді:


9

Цілком можливо, що процес вбивається, але чекаючи, коли батько збере своє повернене значення. У такому випадку після його вбивства він буде знаходитись у стані "Z", а не "R". У такому випадку вам слід знайти ppidпроцес за допомогою psкоманди та вбити також батьківський процес (якщо ви дійсно впевнені, що він не спричинить жодних проблем).

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


Я вважаю, що я намагаюся вбити батьківський процес. Це батьківський процес, який знаходиться в (R) стані. pstree це підтверджує. Дочірні процеси перебувають у (Z) зомбі-станах. Ппід залишається статичним, тому я не вірю, що він просто перезапускається.
Джаред Браун

Якщо ви будете вбивати батьківський процес (і його батьківський процес тощо), то init стане батьківським процесом дочірніх процесів, які перебувають у стані "Z", і збирає їх повернене значення. Таким чином, найкращий спосіб видалити "Z" дітей, батько яких не приймає їх повернення, - це також вбивство батьків, щоб ініт став батьківським процесом мертвої дитини.
Саураб Барціяя

Це питання, яке у мене виникає. Надсилання сигналу -9 через kill на батьківський процес не припиняє його.
Джаред Браун

1
Надіслати SIGHUP батькові іноді достатньо. Не завжди потрібно вбивати батьків.
Томас

2
Вибачте, СІГЧЛО. (занадто рано вранці)
Томас

2

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

перезавантажте коробку або нехай процес сидить.

Цікаво, чи не вдасться ви зупинити процес через kill -STOP {PID}, щоб запобігти споживанню більше процесора.

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


1
Чи не буде процес, який чекав на NFS або якась функція вводу / виводу, щоб завершити, перебувати у (D) стані? Ці процеси знаходяться в (R) стані.
Джаред Браун

Це саме те, що відбувається зі мною іноді, коли я виконую lsкоманду на монтажі s3fs. lsПроцес не буде вбивати навіть , kill -9поки я не змусити Демонтується зumount -l
Marco Марсала

0

Ви перевірили dmesg ще? Я бачив це після паніки ядра; єдиний спосіб відновлення - це перезавантажити (бажано незабаром) - і потім отримати виправлене ядро.

Нормальні незрозумілі процеси будуть знаходитись у стані D, а не R.


Чи можна щось зробити з приводу стану D вмирати важких процесів, крім перезавантаження? ppid = 1
Проф. Моріарті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.