The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Удаление zombie процессов в Solaris
Нередко из-за отсутствия обработчика сигнала 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
 
30.09.2008 , Источник: http://www.c0t0d0s0.org/archives/47...
Ключи: defunct, zombie, proccess, kill, signal, solaris / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Установка и синхронизация времени

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, andr.mobi (??), 12:54, 30/09/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Круто.
    А такое решение аргументировано чем-то или просто было лень автоматизировать эту процедуру, что во всех юниксах уже давно сделано?
     
     
  • 2.2, Аноним (2), 13:02, 30/09/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Круто.
    >А такое решение аргументировано чем-то или просто было лень автоматизировать эту процедуру,
    >что во всех юниксах уже давно сделано?

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

     
     
  • 3.4, Аноним (-), 19:27, 30/09/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>Круто.
    >>А такое решение аргументировано чем-то или просто было лень автоматизировать эту процедуру,
    >>что во всех юниксах уже давно сделано?
    >
    >простите, ЧТО в юниксах автоматизировано?

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

     
     
  • 4.5, Анонизмус (?), 00:53, 01/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>>Круто.
    >>>А такое решение аргументировано чем-то или просто было лень автоматизировать эту процедуру,
    >>>что во всех юниксах уже давно сделано?
    >>
    >>простите, ЧТО в юниксах автоматизировано?
    >
    >убийство зомби по крону, наверно ;)

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


     
  • 4.10, andr.mobi (??), 13:22, 02/10/2008 [^] [^^] [^^^] [ответить]  
  • +/

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

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

     
  • 2.6, Дмитрий Ю. Карпов (?), 11:03, 01/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Зомби-процессы остаются неуничтоженными потому, что их родитель может затребовать код завершения ребёнка. В данном случае админу предоставлена возможность уничтожать зомби досрочно.

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

     
  • 2.7, Аноним (2), 14:01, 01/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Ваш линукс - это не юникс.
     
     
  • 3.8, User294 (??), 23:09, 01/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Ваш линукс - это не юникс.

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

     

  • 1.3, nanodaemon (?), 17:27, 30/09/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    на preap модно вешать симлинк shotgun :)
     
  • 1.9, Hubbitus (ok), 12:49, 02/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень полезно.
    А как в Линуксе такое же делается, кто подскажет?
     
     
  • 2.11, Sphynkx (?), 01:42, 04/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Очень полезно.
    >А как в Линуксе такое же делается, кто подскажет?

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

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

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

    ps -axl

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

     
     
  • 3.12, User294 (ok), 02:27, 04/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>Очень полезно.
    >>А как в Линуксе такое же делается, кто подскажет?

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

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

     
  • 3.13, Hubbitus (ok), 03:51, 04/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>Очень полезно.
    >>А как в Линуксе такое же делается, кто подскажет?
    >
    >http://ru.wikibooks.org/wiki/LOR-FAQ-Admin#.D0.9A.D0.B0.D0.BA_.D1.83.D0.B1.D0
    > ...

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

     
     
  • 4.14, Sphynkx (?), 05:41, 04/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >знаю.
    >Я спрашиваю как сделать такой финт ушами как в Солрке, и все-таки
    >убить зомби, без убийства родителя...

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

     
     
  • 5.15, Hubbitus (ok), 14:31, 04/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >сказать родителю:
    >killall -s CHLD
    >??

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

     

  • 1.16, Arcad (?), 00:30, 05/09/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все бональней!
    РОДИТЕЛЯ В РЕСТАРЕ

    $ sudo /etc/init.d/ssh restart

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

     
     
  • 2.17, ляляляшкакакая (?), 22:27, 27/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Все бональней!
    > РОДИТЕЛЯ В РЕСТАРЕ
    > $ sudo /etc/init.d/ssh restart
    > и все зомби от sshd как рукой снимет.

    Кэп?

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

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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру