Perl скрипт, запись в файл по срабатыванию условия
Код:
#!/bin/perl
$DATE = `date +%d-%m-%Y--%H:%M`;
$MS = "zabbix have been restarted";
$PD = '/var/run/zabbix-server/zabbix-server.pid';
if (-e $PD){
system ("/etc/init.d/zabbix-server start");
open(FD,">>/var/log/zbxup.log") || die "Cannot open log-file\n";
print FD "[$DATE] $MS\n";
close(FD);
}
$DATE = `date +%d-%m-%Y--%H:%M`;
$MS = "zabbix have been restarted";
$PD = '/var/run/zabbix-server/zabbix-server.pid';
if (-e $PD){
system ("/etc/init.d/zabbix-server start");
open(FD,">>/var/log/zbxup.log") || die "Cannot open log-file\n";
print FD "[$DATE] $MS\n";
close(FD);
}
Код:
...
$a=`ps -aux | grep zabbix-server | vl -l`;
...
$a=`ps -aux | grep zabbix-server | vl -l`;
...
Так он и не рестартится каждые 10ть минут. Только в случае отсутствия PID-файла. А вот в лог пишет каждые 10ть минут.
Так все правильно if(-e $PD) отрабатывает если файл _существует_, тебе нужно обратное условие unless(-e $PD)
Пробывал (! -e $PD) - это не одно и то же с unless(-e $PD)?
Цитата: trinitro
Пробывал (! -e $PD) - это не одно и то же с unless(-e $PD)?
Вроде одно и тоже.
Так вот, при (! -e $PD) скрипт не срабатывает
Цитата: trinitro
Так вот, при (! -e $PD) скрипт не срабатывает
Так правильно - и не должен. Если есть Pid - файл то скрипт не должен отрабатывать. Но на pid файл сильно надеятся не надо лучше как mike сказал в процессах искать.
Согласен с mike. Попробую отслеживать в процессах.
Но вот почему не срабатывает при (! -e $PD) при отсутвии файла, непонятно...