URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 44118
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Удаление zombie процессов в Solaris"

Отправлено auto_tips , 30-Сен-08 12:54 
Нередко из-за отсутствия обработчика сигнала SIGCHLD в родительском процессе,
после завершения дочерней программы, остаются "<defunct>" или zombie процессы.
Zombie процессы не занимают системные ресурсы, кроме записи в таблице процессов,
что может вызвать ее переполнение и как следствие блокировку запуска новых процессов,
при большой интенсивности появления zombie. Zombie исчезают после завершения работы
родительского процесса, но записи в таблице также можно очистить принудительным путем.

Получаем список zombie процессов:

    ps -ecl |grep "Z"
    F S  UID  PID  PPID  CLS PRI  ADDR  SZ  WCHAN TTY  TIME CMD
    0 Z  100 27841 27840   -   0     -   0  -     ?    0:00 <defunct>

"kill" и "kill -9" в случае zombie использовать бесполезно. В Solaris для эмуляции вызова wait()
для чтения кода возврата из таблицы процессов существует утилита preap:

    preap 27841
    27841: exited with status 0


URL: http://www.c0t0d0s0.org/archives/4778-Less-known-Solaris-fea...
Обсуждается: http://www.opennet.me/tips/info/1750.shtml


Содержание

Сообщения в этом обсуждении
"Удаление zombie процессов в Solaris"
Отправлено andr.mobi , 30-Сен-08 12:54 
Круто.
А такое решение аргументировано чем-то или просто было лень автоматизировать эту процедуру, что во всех юниксах уже давно сделано?

"Удаление zombie процессов в Solaris"
Отправлено Аноним , 30-Сен-08 13:02 
>Круто.
>А такое решение аргументировано чем-то или просто было лень автоматизировать эту процедуру,
>что во всех юниксах уже давно сделано?

простите, ЧТО в юниксах автоматизировано?


"Удаление zombie процессов в Solaris"
Отправлено Аноним , 30-Сен-08 19:27 
>>Круто.
>>А такое решение аргументировано чем-то или просто было лень автоматизировать эту процедуру,
>>что во всех юниксах уже давно сделано?
>
>простите, ЧТО в юниксах автоматизировано?

убийство зомби по крону, наверно ;)


"Удаление zombie процессов в Solaris"
Отправлено Анонизмус , 01-Окт-08 00:53 
>>>Круто.
>>>А такое решение аргументировано чем-то или просто было лень автоматизировать эту процедуру,
>>>что во всех юниксах уже давно сделано?
>>
>>простите, ЧТО в юниксах автоматизировано?
>
>убийство зомби по крону, наверно ;)

а... ну возможно... нам, гагарам, недоступно...



"Удаление zombie процессов в Solaris"
Отправлено andr.mobi , 02-Окт-08 13:22 

>>простите, ЧТО в юниксах автоматизировано?

пардон, невнимательно прочитал новость. я думал в солярке зомби иниту не отдаётся после завершения родителя. тут другой случай


"Это нельзя автоматизировать по смыслу системы!"
Отправлено Дмитрий Ю. Карпов , 01-Окт-08 11:03 
Зомби-процессы остаются неуничтоженными потому, что их родитель может затребовать код завершения ребёнка. В данном случае админу предоставлена возможность уничтожать зомби досрочно.

Ещё зомби уничтожаются при завершении их родителя - в этом случае детей погибшего усыновляет init, а он старательно чистит зомби.


"Удаление zombie процессов в Solaris"
Отправлено Аноним , 01-Окт-08 14:01 
Ваш линукс - это не юникс.

"Удаление zombie процессов в Solaris"
Отправлено User294 , 01-Окт-08 23:09 
>Ваш линукс - это не юникс.

...что пожалуй, к лучшему.А то юниксы что-то склонны дохнуть 1 за другим.А которые не сдохли напоминают зомбяков - ходячие мертвецы какие-то и есть в основном :)


"Удаление zombie процессов в Solaris"
Отправлено nanodaemon , 30-Сен-08 17:27 
на preap модно вешать симлинк shotgun :)

"Раздел полезных советов: Удаление zombie процессов в Solaris"
Отправлено Hubbitus , 02-Окт-08 12:49 
Очень полезно.
А как в Линуксе такое же делается, кто подскажет?

"Раздел полезных советов: Удаление zombie процессов в Solaris"
Отправлено Sphynkx , 04-Окт-08 01:42 
>Очень полезно.
>А как в Линуксе такое же делается, кто подскажет?

http://ru.wikibooks.org/wiki/LOR-FAQ-Admin#.D0.9A.D0.B0.D0.B...
"
В состоянии "зомби" процесс не имеет образа в RAM, но информация о нём сохраняется в таблице процессов. Он не поедает ресурсы, но теоретически могут кончится PID'ы.

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

Увидеть родителя можно в столбце PPID после команды

ps -axl

Подробнее: http://cad.narod.ru/methods/os_unix/unibas/process.html
"


"Раздел полезных советов: Удаление zombie процессов в Solaris"
Отправлено User294 , 04-Окт-08 02:27 
>>Очень полезно.
>>А как в Линуксе такое же делается, кто подскажет?

...
>Подробнее: http://cad.narod.ru/methods/os_unix/unibas/process.html

Стоит только добавить что если интересует как оно в *линуксе* - эту доку лучше не читать.Потому что там про юниксы.И совпадает с действительностью соответственно лишь местами.


"Раздел полезных советов: Удаление zombie процессов в Solaris"
Отправлено Hubbitus , 04-Окт-08 03:51 
>>Очень полезно.
>>А как в Линуксе такое же делается, кто подскажет?
>
>http://ru.wikibooks.org/wiki/LOR-FAQ-Admin#.D0.9A.D0.B0.D0.B...
> ...

Не, ну я же не совсем дурак, это я так все прекрасно знаю.
Я спрашиваю как сделать такой финт ушами как в Солрке, и все-таки убить зомби, без убийства родителя...


"Раздел полезных советов: Удаление zombie процессов в Solaris"
Отправлено Sphynkx , 04-Окт-08 05:41 
>знаю.
>Я спрашиваю как сделать такой финт ушами как в Солрке, и все-таки
>убить зомби, без убийства родителя...

сказать родителю:
killall -s CHLD
??


"Раздел полезных советов: Удаление zombie процессов в Solaris"
Отправлено Hubbitus , 04-Окт-08 14:31 
>сказать родителю:
>killall -s CHLD
>??

Неа, не помогает, ни
kill -s SIGCHLD pid
ни
kill -s CHLD pid


"Удаление zombie процессов в Solaris"
Отправлено Arcad , 05-Сен-09 00:30 
Все бональней!
РОДИТЕЛЯ В РЕСТАРЕ

$ sudo /etc/init.d/ssh restart

и все зомби от sshd как рукой снимет.


"."
Отправлено ляляляшкакакая , 27-Окт-10 22:27 
> Все бональней!
> РОДИТЕЛЯ В РЕСТАРЕ
> $ sudo /etc/init.d/ssh restart
> и все зомби от sshd как рукой снимет.

Кэп?

> Неа, не помогает, ни
> kill -s SIGCHLD pid
> ни
> kill -s CHLD pid

Всё верно...система уведомила процесс-родитель ещё при завершении процесса, превратившегося в зомби. Проблема в том, что некоторые процессы SIGCHLD попросту игнорируют.