Size: a a a

2020 December 13

ДЛ

Дмитрий Лапчик... in Modern::Perl
про KILL пишут, что процесс может стать зомби, если он был в сисколле
источник

b

basiliscos in Modern::Perl
может никогда и не прилететь. "Term" для корректного шатдауна, "Kill" для жёсткого
источник

ДЛ

Дмитрий Лапчик... in Modern::Perl
все понятно, но это не отвечает на мои вопросы
источник

ДЛ

Дмитрий Лапчик... in Modern::Perl
кстати, KILL по идее работает быстрее TERM, т.к. не производит лишних действий?
источник

ДЛ

Дмитрий Лапчик... in Modern::Perl
насколько на самом деле велик риск наплодить зомби процессов?
источник

b

basiliscos in Modern::Perl
Дмитрий Лапчик
если sigchild не прилетел? сколько его ждать?
ну от твоего процесса зависит, приложения. Если ему надо сбросить кэши на медленный диск по сети, то можно 10 мин ждать. А если обычная веб-прилга, то, наверное, и 0.1 секунды хватит.
источник

ДЛ

Дмитрий Лапчик... in Modern::Perl
ну да, понял, единого рецепта не существует
источник

ВР

Василий Степанович Р... in Modern::Perl
Дмитрий Лапчик
кстати, KILL по идее работает быстрее TERM, т.к. не производит лишних действий?
TERM просит процесс завершить свою работу и процесс может к этой просьбе отнестись по разному - вплоть до её игнорирования.

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

ДЛ

Дмитрий Лапчик... in Modern::Perl
поскольку у меня дочерние процессы работают только с сетью и никаких данных сохранять не нужно, то я могу смело пользоваться KILL или же есть подводные камни?
источник

a

allter in Modern::Perl
Это же тебе решать, в зависимости от того, как ты с сетью работаешь. Если твой процесс спокойно и без потери информации можно прибивать, то может он и не нужен?
источник

SZ

Sergey Zhmylove in Modern::Perl
basiliscos
sigchild должен прилететь
Не обязательно
источник

SZ

Sergey Zhmylove in Modern::Perl
Дмитрий Лапчик
про KILL пишут, что процесс может стать зомби, если он был в сисколле
Эээ, идиоты пишут, простите.
источник

SZ

Sergey Zhmylove in Modern::Perl
Дмитрий Лапчик
кстати, KILL по идее работает быстрее TERM, т.к. не производит лишних действий?
Немного не поэтому, но да.
источник

SZ

Sergey Zhmylove in Modern::Perl
Дмитрий Лапчик
насколько на самом деле велик риск наплодить зомби процессов?
Если нормальный инит, то невелик -- он их отстрелит в течение пары секунд
источник

SZ

Sergey Zhmylove in Modern::Perl
Дмитрий Лапчик
поскольку у меня дочерние процессы работают только с сетью и никаких данных сохранять не нужно, то я могу смело пользоваться KILL или же есть подводные камни?
Если ты уверен, что процесс тебе не нужен и тебе пофиг на его данные, можешь смело слать kill и не париться.
А ещё если тебе вообще до фени коды возврата всех детей, то игнорируй chld и тогда они не будут становиться зомби
источник

ДЛ

Дмитрий Лапчик... in Modern::Perl
спасибо
источник

ДЛ

Дмитрий Лапчик... in Modern::Perl
$SIG{CHLD}='IGNORE';

#$SIG{CHLD} = sub {
#    while( ( my $child = waitpid( -1, &WNOHANG ) ) > 0 ) {
#        print STDERR "SIGNAL CHLD $child\n";
#    }
#};


так?
источник

SZ

Sergey Zhmylove in Modern::Perl
Насчёт chld -- сигнал может не прилететь вообще. Есть много факторов в системе, основные -- это ринг буфер сигналов в ядре и обработка сигналов в перле начиная с 5.8.1.
Во всех манах по сигналам пишут, что им нельзя доверять
источник

SZ

Sergey Zhmylove in Modern::Perl
Дмитрий Лапчик
$SIG{CHLD}='IGNORE';

#$SIG{CHLD} = sub {
#    while( ( my $child = waitpid( -1, &WNOHANG ) ) > 0 ) {
#        print STDERR "SIGNAL CHLD $child\n";
#    }
#};


так?
Да
источник

SZ

Sergey Zhmylove in Modern::Perl
Sergey Zhmylove
Эээ, идиоты пишут, простите.
Насчёт идиотов: не важно, что делал процесс, хоть 1 while 1 , он все равно станет зомби если родитель не маскирует sigchld. После смерти родителя, не wait-нутые зомби попадают под init и он их добивает, в зависимости от своей костыльности, но чаще всего довольно быстро. Опенрц, например, на каждый sigchld слал по три неблокирующих waitpid.
источник