Перезапуск Apache

Материал из Eludia
Перейти к: навигация, поиск
Note.jpg Эта заметка не претендует на энциклопедичность. Она не отличается ни широтой охвата, ни строгостью формулировок. Это просто записочка на память.

Неоднократно замечено, что Apache / mod_perl при большом объёме загруженных модулей не всегда останавливается с первого раза. Apachectl restart запросто может оставить в памяти старый байт-код. И даже после аpachectl stop надо проверять pid-файл. Для того, чтобы это автоматизировать, удобно пользоваться примерно таким скриптом (директории могут варьироваться в зависимости от ОС):

#!/usr/bin/perl -w

no warnings;

my $apache = 'apache-perl';

my $pidfile   = "/var/run/$apache.pid";
my $stop_cmd  = "/etc/init.d/$apache stop";
my $start_cmd = "/etc/init.d/$apache start";

while (-f $pidfile) {

        warn "Found PIDfile $pidfile\n";

        my $pid = `cat $pidfile` + 0;

        warn "PID = $pid\n";

        $pid > 0 or last;

        if (kill 0, $pid) {

                warn "It's alive, trying to stop...\n";

                `$stop_cmd`;

                sleep (1);

        }
        else {

                warn "It's dead, deleting pidfile...\n";

                unlink $pidfile;

        }

}

warn "That's all. Now starting it...\n";

`$start_cmd`;
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Разработчику
Администратору
Инструменты