Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Perl скрипт, запись в файл по срабатыванию условия

10K
28 июня 2012 года
trinitro
48 / / 14.06.2010
Написал такой скрипт:

Код:
#!/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);
    }
Поставлен на срабатывание каждые 10ть минут по cron'у. Но запись в лог идёт в любом случае! Через каждые десять минут новая запись "zabbix have been restarted". Хотя, zabbix не падал. Что поправить чтобы запись в лог совершалась только в случае реального поднятия сервера?
4
28 июня 2012 года
mike
3.7K / / 01.10.2002
Нужно просто не рестартовать его каждые 10 минут. Я бы проверял не PID файл, а наличие процесса или реальную работоспособность. Что-то типа:

 
Код:
...
$a=`ps -aux | grep zabbix-server | vl -l`;
...
10K
28 июня 2012 года
trinitro
48 / / 14.06.2010
Так он и не рестартится каждые 10ть минут. Только в случае отсутствия PID-файла. А вот в лог пишет каждые 10ть минут.
277
28 июня 2012 года
arrjj
1.7K / / 26.01.2011
Так все правильно if(-e $PD) отрабатывает если файл _существует_, тебе нужно обратное условие unless(-e $PD)
10K
28 июня 2012 года
trinitro
48 / / 14.06.2010
Пробывал (! -e $PD) - это не одно и то же с unless(-e $PD)?
277
28 июня 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: trinitro
Пробывал (! -e $PD) - это не одно и то же с unless(-e $PD)?

Вроде одно и тоже.

10K
28 июня 2012 года
trinitro
48 / / 14.06.2010
Так вот, при (! -e $PD) скрипт не срабатывает
277
28 июня 2012 года
arrjj
1.7K / / 26.01.2011
Цитата: trinitro
Так вот, при (! -e $PD) скрипт не срабатывает


Так правильно - и не должен. Если есть Pid - файл то скрипт не должен отрабатывать. Но на pid файл сильно надеятся не надо лучше как mike сказал в процессах искать.

10K
28 июня 2012 года
trinitro
48 / / 14.06.2010
Понятно, что если есть PID-файл. Но когда сервер падает пропадает и файл, но в моём случае почему-то срипт не отрабатавает при его отсутствии (PID-файла).
Согласен с mike. Попробую отслеживать в процессах.
Но вот почему не срабатывает при (! -e $PD) при отсутвии файла, непонятно...

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог