Перезапуск Apache
Материал из Eludia.
| Эта заметка не претендует на энциклопедичность. Она не отличается ни широтой охвата, ни строгостью формулировок. Это просто записочка на память. |
Неоднократно замечено, что 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`;

