Zombi процессы
Модератор: SLEDopit
Zombi процессы
Хай всем.
Подскажите как скомпилировать ядро таким образом, чтобы ядро отслеживало зомби процесы и само их удаляла.
В каком именно разделе находится соотвествующая опция.
Подскажите как скомпилировать ядро таким образом, чтобы ядро отслеживало зомби процесы и само их удаляла.
В каком именно разделе находится соотвествующая опция.
-
- Сообщения: 93
- ОС: Своя-0.1.4.2
Re: Zombi процессы
"Ядра их удалять не будет"
Ядро(оно) отвечает за распределение памяти, процессорного времени, управление процессами...
Есть системный вызов kill, он этим(убийством) и занимается, ядро нельзя настроить так, чтобы оно убивало зомби-процессы.
А команда top поможет в поиске зомбей
Ядро(оно) отвечает за распределение памяти, процессорного времени, управление процессами...
Есть системный вызов kill, он этим(убийством) и занимается, ядро нельзя настроить так, чтобы оно убивало зомби-процессы.
А команда top поможет в поиске зомбей
Мазохист...
-
- Сообщения: 93
- ОС: Своя-0.1.4.2
Re: Zombi процессы
периодически от них избавляется
А можно узнать с какой частотой? У меня один уже 7-й час висит...
Мазохист...
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Zombi процессы
Кто родитель этого процесса в настоящий момент (ps exfa)?
-
- Сообщения: 93
- ОС: Своя-0.1.4.2
Re: Zombi процессы
Это 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
Висимь.
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
Мазохист...
Re: Zombi процессы
wyldrodney писал(а): ↑14.11.2007 02:44"Ядра их удалять не будет"
Ядро(оно) отвечает за распределение памяти, процессорного времени, управление процессами...
Есть системный вызов kill, он этим(убийством) и занимается, ядро нельзя настроить так, чтобы оно убивало зомби-процессы.
А команда top поможет в поиске зомбей
Ненастоящие зомби (процессы без родителя ) убиваются командой kill или kill -9 и т.п.
Зомби (настоящие) это не прцессы, а только записи в тавлице процессов.
Когда родитель не запрашивает посмертную информацию о своем потомке ( кода возврата), то информация храница до востребования, получается зомби. Вот и всё. Убить зомби командой kill нельзя, она просто скажет, что такого процесса нет, и будет абсолютно права.
Кто-то мне говорил, что ядро можно скомпилить так, что оно будет чистить этих зомби.
Пока что я могу избавится от зомбей рестаротом. Мож кто нить подскажет как решить проблему всетки.
Повторюсь что кил не помогает.
Re: Zombi процессы
FiXu писал(а): ↑14.11.2007 06:03Ненастоящие зомби (процессы без родителя ) убиваются командой kill или kill -9 и т.п.
Зомби (настоящие) это не прцессы, а только записи в тавлице процессов.
Когда родитель не запрашивает посмертную информацию о своем потомке ( кода возврата), то информация храница до востребования, получается зомби. Вот и всё. Убить зомби командой kill нельзя, она просто скажет, что такого процесса нет, и будет абсолютно права.
Кто-то мне говорил, что ядро можно скомпилить так, что оно будет чистить этих зомби.
Пока что я могу избавится от зомбей рестаротом. Мож кто нить подскажет как решить проблему всетки.
Повторюсь что кил не помогает.
wiki процесс-зомби
1) Процесс оставшийся без родителя (осиротевший) это не зомби вообще и к зомби отношения не имеет. (Хотя иногда это демон) Гы)
2) команда kill по отношению к процессу-зомби не должна ругаться и не скажет, что такого процесса нет. Потому что такой процесс ЕСТЬ. он просто зомби. вот только на сигналы зомби уже реагировать ни как небудет.
3) как Вам уже сказали система подчищает зомби. Этим занимается не ядро а init.
Зомби пропадают тогда, когда их родитель делает wait или тогда, когда родитель умирает.
4) наличие зомби (даже в количестве нескольких десятков) Вас сильно пугать не должно. Вся память которая была выделена под этот процесс - освобождена, осталась только запись в таблице процессов.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
Re: Zombi процессы
В Solaris 9 появилась новая программа preap, которая позволяет убрать из системы "мнимые" (defunct), не до конца завершившиеся процессы, которые также носят название "зомби" (zombie). Эти процессы совершенно безобидны, так как это - самые обыкновенные процессы, код завершения которых не был принят родительскими процессами (например, в результате преждевременного завершения родительского процесса или иного сбоя). Несмотря на безобидность, они могут попусту занимать ресурсы системы, если таких процессов будет много. Обычно процессы-зомби автоматически уничтожаются процессом init, но если этого почему-либо не произошло, можно воспользоваться программой preap, которая примет код завершения процесса-зомби и даст ему упокоиться с миром.
вот интересно в linux есть команда preap?
даже если есть, не стоит ей злоупотреблять.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
Re: Zombi процессы
После кила родителя все мои 236 зомбей пропали.
Вся память которая была выделена под этот процесс - освобождена, осталась только запись в таблице процессов.
А можно ли удалить как нить записи о зомби из списка таблицы процессов не убивая родителя?
А лучше чтобы система это сама автоматически делала, т.к я не могу постоянно следить за серваком.
А зомби плодятся потихой. За 6 дней накопилось 236. Они действительно не занимаают ресурсов, но ведь существуют лимит процесов для каждого пользователя и при его достижении не будут создаваться новые процессы. Как можно решить эту проблему?
Re: Zombi процессы
Это глюк прикладной программы.
может стоит её обновить?
возможные причины проблемы:
1) программист был вообще не в курсе что он делает и ему не нужны коды возврата дочерних процессов.
2) программист сделал обработчик на сигнал SIGCHLD и там делает wait для одного зомби. Типа все правильно, НО если умрет два или больше дочерних процесса до того момента, когда родитель успеет начать обрабатывать сигнал от смерти первого процесса, то сигналы от о смерти других детей будут потеряны. ОС не строит очереди для SIGCHLD.
пути решения
1) как в случае с утечками памяти - периодически завершать программу и стартовать её снова.
2) в том случае, если причина проблемы - №1. (Типа нам вообще не нужен код завершения) Можно написать программу стартер (типа как nohup), которая будет делать следующие вещи :
_____________a) в качестве параметра принимать имя программы которую надо запустить
_____________б) менять диспозицию для сигнала SIGCHLD в знячение SIG_IGN
_____________в) делать exec или fork-exec для указанной параметром программы
если SIGCHLD явным образом игнорируется, то ядро не создает зомби.
3) если вторая причина проблемы, то начинаем кидать отцу SIGCHLD, до тех пор пока он не заберет всех зомби
4) связаться с разработчиком и сказать ему, что он не прав.
может стоит её обновить?
возможные причины проблемы:
1) программист был вообще не в курсе что он делает и ему не нужны коды возврата дочерних процессов.
2) программист сделал обработчик на сигнал SIGCHLD и там делает wait для одного зомби. Типа все правильно, НО если умрет два или больше дочерних процесса до того момента, когда родитель успеет начать обрабатывать сигнал от смерти первого процесса, то сигналы от о смерти других детей будут потеряны. ОС не строит очереди для SIGCHLD.
пути решения
1) как в случае с утечками памяти - периодически завершать программу и стартовать её снова.
2) в том случае, если причина проблемы - №1. (Типа нам вообще не нужен код завершения) Можно написать программу стартер (типа как nohup), которая будет делать следующие вещи :
_____________a) в качестве параметра принимать имя программы которую надо запустить
_____________б) менять диспозицию для сигнала SIGCHLD в знячение SIG_IGN
_____________в) делать exec или fork-exec для указанной параметром программы
если SIGCHLD явным образом игнорируется, то ядро не создает зомби.
3) если вторая причина проблемы, то начинаем кидать отцу SIGCHLD, до тех пор пока он не заберет всех зомби
4) связаться с разработчиком и сказать ему, что он не прав.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
Re: Zombi процессы
гы
есть еще "решение":
один умелец написал модуль ядра, который чистит зомби.
безумный модуль.. по сути он делает работу системы неправильной (может чел, который его писал вообще не в курсе для чего нужны зомби. А ведь если зомби появляются, значит это кому-нить нужно! Значит - кто-то хочет, чтобы они были! Гы)
могу дать ссылку
есть еще "решение":
один умелец написал модуль ядра, который чистит зомби.
безумный модуль.. по сути он делает работу системы неправильной (может чел, который его писал вообще не в курсе для чего нужны зомби. А ведь если зомби появляются, значит это кому-нить нужно! Значит - кто-то хочет, чтобы они были! Гы)
могу дать ссылку
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
-
- Сообщения: 93
- ОС: Своя-0.1.4.2
Re: Zombi процессы
Такс... "настоящий" зомби -- это просто структура, это я знаю, и ещё я знаю что top, их ТОЧНО могёт валить, хотя-бы запись, но может.
Буковка k в топе поможет!
Буковка k в топе поможет!
Мазохист...
Re: Zombi процессы
Пожалуйста, смотрите
Zclean is a loadable Linux kernel module that eliminates zombie (defunct) processes from the system.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
Re: Zombi процессы
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
0xDEFEC8ED
-
- Сообщения: 93
- ОС: Своя-0.1.4.2
Re: Zombi процессы
Фух... 27 тысяч зомбей убил;D
Пришлось скриптик писать
nesk, вы первый на форуме, кто доказал что я неправ, очень рад за вас!
Мне не доводилось их убивать, просто доверился Гентушному хендбуку:-(
Теперь всё проверять буду.
Пришлось скриптик писать
nesk, вы первый на форуме, кто доказал что я неправ, очень рад за вас!
Мне не доводилось их убивать, просто доверился Гентушному хендбуку:-(
Теперь всё проверять буду.
Мазохист...