Что такое процесс-зомби и как я уничтожаю его?

http://en.wikipedia.org/wiki/Wireless_Distribution_System

Используя известный Linksys WRT54GL с пользовательским встроенным микропрограммным обеспечением можно очень легко установить сеть WDS, чтобы объединить дом в облако.

http://www.polarcloud.com/tomatofaq#how_do_i_use_wds

Я раньше делал это вручную (все еще с WRT54GL), но теперь с симпатичным интерфейсом AJAX это не могло быть легче.

Плюс Вы получают превосходный http://en.wikipedia.org/wiki/Quality_of_service с единственным полем галочки (никакая потребность регулировать потоки вручную больше).

Видео 2 МБ пропускной способности Monitor:http://www.polarcloud.com/v/scbwm.htm

37
задан 27 May 2009 в 08:54
7 ответов

О, бог! Нет нет нет. Не используйте уничтожают-9.

Это не дает процессу шанс чисто:

  1. закройте сокетные соединения

  2. очистите временные файлы

  3. сообщите его детям, что это уходит

  4. сбросьте его терминальные характеристики и так далее и так далее и так далее.

Обычно отправьте 15 и ожидайте секунда или два, и если это не работает, отправьте 2, и если это не работает, отправьте 1. Если это не делает, УДАЛЯЕТ ДВОИЧНЫЙ ФАЙЛ, потому что программа плохо себя ведется!

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

17
ответ дан 28 November 2019 в 19:48
  • 1
    уничтожьте-9 won' t уничтожают зомби. Необходимо уничтожить их родителя, взгляд pstree. –  LapTop006 27 May 2009 в 11:51

Процесс-зомби (на самом деле теперь их называют <defunct>) не действительно процесс. Это - только запись в таблице процессов, таким образом, родительский процесс может сделать wait() syscall.

Вы не должны волноваться о них. Они не занимают ресурсов, они исчезнут также, когда их родитель будет звонить wait() на том, когда умирает сам родитель.

19
ответ дан 28 November 2019 в 19:48

Это - процесс, который был полностью освобожден, но все еще существует в таблице процессов. Контрастируйте это с процессом висячей строки, родитель которого умер, но все еще выполняется.

Вот некоторые совет при избавлении от них.

9
ответ дан 28 November 2019 в 19:48

Процесс-зомби не имеет никаких ресурсов, выделенных ему вообще кроме записи в дереве процесса. Это происходит, когда процесс завершается, однако родительский процесс еще не пожинал его, (т.е. waitредактор на нем).

Можно попытаться вынудить родителя сделать это, если Вы хотите путем отправки ему SIGCHLD (kill -20), к родителю, но нет никакой гарантии, что родитель будет соблюдать его.

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

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

Единственное время, когда Вы должны быть заинтересованы от процессов-зомби, когда Вы видите партии и многие из них, например, если то же дрянное упомянутое выше приложение помещается при загрузке.

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

8
ответ дан 28 November 2019 в 19:48

Процесс-зомби является процессом, который закончил выполняться, но все еще перечислен в таблице процессов.

уничтожьте-9 [порождают process_name], подавит его, с экстремальным предубеждением.

-1
ответ дан 28 November 2019 в 19:48
  • 1
    уничтожьте-9, не уничтожит процесс-зомби - that' s одна причина they' ре позвонило зомби. Зомби " process" не уйдет, пока его код возврата не пожинает родительский процесс. –  Mei 7 July 2009 в 02:36
  • 2
    Нет, уничтожьте-9 на , РОДИТЕЛЬ уничтожит родителя, делая init it' s родитель, который БУДЕТ , пожинают child' s код возврата. –  Alan 15 July 2009 в 03:03

Что касается виртуального ружья...

$ shoot <pid>
#!/bin/sh
victim=`ps -e -o pid,ppid | egrep "^\s*$1\b" | awk '{print $2}'`
victim\_name=`ps -e -o pid,cmd | egrep "^\s*${victim}\b" | head -n 1 | awk '{print $2}'`
#kill ${victim}
echo "Killed ${victim_name}."

И помните: всегда выстрелите им в голову.

0
ответ дан 28 November 2019 в 19:48

Уже существует принятый ответ, однако: Вы CAN уничтожаете процесс-зомби. Присоединение с отладчиком к родительскому процессу и вызову waitpid функция. Например: - позволяют нам предположить, что родитель имеет PID=100, процесс-зомби имеет PID=200

$ gdb -p 100
(gdb) call waitpid(200, 0, 0)
(gdb) quit
9
ответ дан 28 November 2019 в 19:48

Теги

Похожие вопросы