Zombi процессы

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
FiXu
Сообщения: 10

Zombi процессы

Сообщение FiXu »

Хай всем.

Подскажите как скомпилировать ядро таким образом, чтобы ядро отслеживало зомби процесы и само их удаляла.

В каком именно разделе находится соотвествующая опция.
Спасибо сказали:
wyldrodney
Сообщения: 93
ОС: Своя-0.1.4.2

Re: Zombi процессы

Сообщение wyldrodney »

"Ядра их удалять не будет"
Ядро(оно) отвечает за распределение памяти, процессорного времени, управление процессами...
Есть системный вызов kill, он этим(убийством) и занимается, ядро нельзя настроить так, чтобы оно убивало зомби-процессы.
А команда top поможет в поиске зомбей:D
Мазохист...
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Zombi процессы

Сообщение serzh-z »

FiXu писал(а):
14.11.2007 02:26
чтобы ядро отслеживало зомби процесы и само их удаляла.
Оно и так их отслеживает и передаёт процессу init с PID = 1, который периодически избавляется от подобных "усыновлённых" процессов с помощью вызовов wait().
Спасибо сказали:
wyldrodney
Сообщения: 93
ОС: Своя-0.1.4.2

Re: Zombi процессы

Сообщение wyldrodney »

периодически от них избавляется

А можно узнать с какой частотой? У меня один уже 7-й час висит...
Мазохист...
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Zombi процессы

Сообщение serzh-z »

wyldrodney писал(а):
14.11.2007 02:57
У меня один уже 7-й час висит...
Кто родитель этого процесса в настоящий момент (ps exfa)?
Спасибо сказали:
wyldrodney
Сообщения: 93
ОС: Своя-0.1.4.2

Re: Zombi процессы

Сообщение wyldrodney »

Это dhcpcd, папа -- init;)
Висимь.
DHCP Client Daemon v.2.0.5
Linux wyldrodney 2.6.23.1 #1 SMP Tue Oct 23 20:15:19 UTC 2007 i686 Intel® Core™2 CPU 6420 @ 2.13GHz GenuineIntel GNU/Linux
Мазохист...
Спасибо сказали:
FiXu
Сообщения: 10

Re: Zombi процессы

Сообщение FiXu »

wyldrodney писал(а):
14.11.2007 02:44
"Ядра их удалять не будет"
Ядро(оно) отвечает за распределение памяти, процессорного времени, управление процессами...
Есть системный вызов kill, он этим(убийством) и занимается, ядро нельзя настроить так, чтобы оно убивало зомби-процессы.
А команда top поможет в поиске зомбей:D


Ненастоящие зомби (процессы без родителя ) убиваются командой kill или kill -9 и т.п.

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

Кто-то мне говорил, что ядро можно скомпилить так, что оно будет чистить этих зомби.

Пока что я могу избавится от зомбей рестаротом. Мож кто нить подскажет как решить проблему всетки.
Повторюсь что кил не помогает.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Zombi процессы

Сообщение nesk »

FiXu писал(а):
14.11.2007 06:03
Ненастоящие зомби (процессы без родителя ) убиваются командой kill или kill -9 и т.п.

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

Кто-то мне говорил, что ядро можно скомпилить так, что оно будет чистить этих зомби.

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

wiki процесс-зомби

1) Процесс оставшийся без родителя (осиротевший) это не зомби вообще и к зомби отношения не имеет. (Хотя иногда это демон) Гы)
2) команда kill по отношению к процессу-зомби не должна ругаться и не скажет, что такого процесса нет. Потому что такой процесс ЕСТЬ. он просто зомби. вот только на сигналы зомби уже реагировать ни как небудет.
3) как Вам уже сказали система подчищает зомби. Этим занимается не ядро а init.
Зомби пропадают тогда, когда их родитель делает wait или тогда, когда родитель умирает.
4) наличие зомби (даже в количестве нескольких десятков) Вас сильно пугать не должно. Вся память которая была выделена под этот процесс - освобождена, осталась только запись в таблице процессов.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Zombi процессы

Сообщение nesk »

В Solaris 9 появилась новая программа preap, которая позволяет убрать из системы "мнимые" (defunct), не до конца завершившиеся процессы, которые также носят название "зомби" (zombie). Эти процессы совершенно безобидны, так как это - самые обыкновенные процессы, код завершения которых не был принят родительскими процессами (например, в результате преждевременного завершения родительского процесса или иного сбоя). Несмотря на безобидность, они могут попусту занимать ресурсы системы, если таких процессов будет много. Обычно процессы-зомби автоматически уничтожаются процессом init, но если этого почему-либо не произошло, можно воспользоваться программой preap, которая примет код завершения процесса-зомби и даст ему упокоиться с миром.

вот интересно в linux есть команда preap?
даже если есть, не стоит ей злоупотреблять.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
FiXu
Сообщения: 10

Re: Zombi процессы

Сообщение FiXu »

nesk писал(а):
14.11.2007 06:56
Зомби пропадают тогда, когда их родитель делает wait или тогда, когда родитель умирает.


После кила родителя все мои 236 зомбей пропали.

Вся память которая была выделена под этот процесс - освобождена, осталась только запись в таблице процессов.


А можно ли удалить как нить записи о зомби из списка таблицы процессов не убивая родителя?
А лучше чтобы система это сама автоматически делала, т.к я не могу постоянно следить за серваком.

А зомби плодятся потихой. За 6 дней накопилось 236. Они действительно не занимаают ресурсов, но ведь существуют лимит процесов для каждого пользователя и при его достижении не будут создаваться новые процессы. Как можно решить эту проблему?
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Zombi процессы

Сообщение nesk »

Это глюк прикладной программы.
может стоит её обновить?

возможные причины проблемы:
1) программист был вообще не в курсе что он делает :crazy: и ему не нужны коды возврата дочерних процессов.
2) программист сделал обработчик на сигнал SIGCHLD и там делает wait для одного зомби. Типа все правильно, НО если умрет два или больше дочерних процесса до того момента, когда родитель успеет начать обрабатывать сигнал от смерти первого процесса, то сигналы от о смерти других детей будут потеряны. ОС не строит очереди для SIGCHLD.

пути решения
1) как в случае с утечками памяти - периодически завершать программу и стартовать её снова.
2) в том случае, если причина проблемы - №1. (Типа нам вообще не нужен код завершения) Можно написать программу стартер (типа как nohup), которая будет делать следующие вещи :
_____________a) в качестве параметра принимать имя программы которую надо запустить
_____________б) менять диспозицию для сигнала SIGCHLD в знячение SIG_IGN
_____________в) делать exec или fork-exec для указанной параметром программы
если SIGCHLD явным образом игнорируется, то ядро не создает зомби.
3) если вторая причина проблемы, то начинаем кидать отцу SIGCHLD, до тех пор пока он не заберет всех зомби
4) связаться с разработчиком и сказать ему, что он не прав.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Zombi процессы

Сообщение nesk »

гы :)
есть еще "решение":
один умелец написал модуль ядра, который чистит зомби. :crazy:
безумный модуль.. по сути он делает работу системы неправильной (может чел, который его писал вообще не в курсе для чего нужны зомби. А ведь если зомби появляются, значит это кому-нить нужно! Значит - кто-то хочет, чтобы они были! Гы)

могу дать ссылку :bones:
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Zombi процессы

Сообщение serzh-z »

FiXu писал(а):
14.11.2007 07:34
А можно ли удалить как нить записи о зомби из списка таблицы процессов не убивая родителя?
Нет. Да и нельзя такое делать. Процесс - в данном случае dhcpcd - сам должен избавиться от подчинённого зомби. Стоит и правда его обновить.
Спасибо сказали:
FiXu
Сообщения: 10

Re: Zombi процессы

Сообщение FiXu »

nesk писал(а):
14.11.2007 08:28
один умелец написал модуль ядра, который чистит зомби.
могу дать ссылку :bones:


Давай плиз ссылку. Интересно будет его потестить.




Всем спс за ответы.
Спасибо сказали:
wyldrodney
Сообщения: 93
ОС: Своя-0.1.4.2

Re: Zombi процессы

Сообщение wyldrodney »

Такс... "настоящий" зомби -- это просто структура, это я знаю, и ещё я знаю что top, их ТОЧНО могёт валить, хотя-бы запись, но может.
Буковка k в топе поможет!
Мазохист...
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Zombi процессы

Сообщение nesk »

FiXu писал(а):
15.11.2007 06:02
Давай плиз ссылку. Интересно будет его потестить.


Пожалуйста, смотрите :)
Zclean is a loadable Linux kernel module that eliminates zombie (defunct) processes from the system.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Zombi процессы

Сообщение nesk »

wyldrodney писал(а):
15.11.2007 08:41
Такс... "настоящий" зомби -- это просто структура, это я знаю, и ещё я знаю что top, их ТОЧНО могёт валить, хотя-бы запись, но может.
Буковка k в топе поможет!


Вы не правы.
Буковка k в top не делает ничего магического. Она просто дает возможность послать сигнал, так же как команда kill. Зомби уже мертв, поэтому сигналом его не напугаешь.
[поет]
Мертвые не стареют, мертвые не растут,
Мертвые не курят, мертвые не пьют,
Мертвые не танцуют, мертвые не лгут,
Мертвые не играют, мертвые не поют.
[/поет]

Вот вам программка

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
main(int argc, char *argv[])
{
        int i;


        fprintf(stderr,"++ I am parent of 10 Zombie. Dont kill me My PID=%d\n", getpid());
        for (i=0; i<10; i++)
        if(! fork())
                {

                fprintf(stderr,"-- I am Zombie. Kill me plzz.  My PID=%d\n", getpid());
                exit(0);
                }
        pause();
}


скомпилируйте
cc zombie.c -o zombie
запускайте
./zombie&
наслаждайтесь общением с зомби
ps
29632 pts/0 00:00:00 zombie
29633 pts/0 00:00:00 zombie <defunct>
29634 pts/0 00:00:00 zombie <defunct>
29635 pts/0 00:00:00 zombie <defunct>
29636 pts/0 00:00:00 zombie <defunct>
29637 pts/0 00:00:00 zombie <defunct>
29638 pts/0 00:00:00 zombie <defunct>
29639 pts/0 00:00:00 zombie <defunct>
29640 pts/0 00:00:00 zombie <defunct>
29641 pts/0 00:00:00 zombie <defunct>
29642 pts/0 00:00:00 zombie <defunct>
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
wyldrodney
Сообщения: 93
ОС: Своя-0.1.4.2

Re: Zombi процессы

Сообщение wyldrodney »

Фух... 27 тысяч зомбей убил;D
Пришлось скриптик писать:)

nesk, вы первый на форуме, кто доказал что я неправ, очень рад за вас!

Мне не доводилось их убивать, просто доверился Гентушному хендбуку:-(
Теперь всё проверять буду.
Мазохист...
Спасибо сказали:
Ответить