Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование *NIX систем > запуск перл скрипта через крон


Автор: angeloflight 22.1.2010, 14:02
здравствуйте. есть перл скрипт, который висит в процессах и выполняет работу. нужно посредством крона выполнять проверку: работает ли скрипт, если нет - то запустить его. я пытался решить проблему средствами другого перл скрипта, но ничего путного не вышло( если у кого то есть идеи по этому поводу - буду очень благодарен  smile 

Автор: bilbobagginz 22.1.2010, 14:15
angeloflight, решений туча - unix сокеты, shmem, named/unnamed pipe, RPC.
каким образом ты собираешься решать, что твоя главная (проверяемая) программа - в порядке ?

Добавлено через 4 минуты и 30 секунд
самое стандартное решение - запускать твою программу из "менеджера", который будет получать каким-то (каким ты решишь) образом статус. 
напр. регулярно раз в N единиц времени. Если после N*1.25 нет статуса, ты процесс прибиваешь (шлешь ему какой-то сигнал - KILL/TERM) и запускаешь новый процесс.



Автор: spin2 22.1.2010, 14:43
Я так делаю:
Цитата

#!/bin/bash
b=$(cat /tmp/smth.pid)
kill -0 $b 2>/dev/null
a=$?
if [ $a == 1 ]
then
echo $(date) RESTART smth >>/root/check.log
setsid /usr/bin/perl /root/smth.pl &
else
echo $(date) OK smth >>/root/check.log
fi
exit

Автор: admsasha 24.1.2010, 11:22
"работает ли скрипт" - это запущена или нет, да ?

Код

use Fcntl ':flock';   # импортируем константы LOCK_*

open(FILE,"> "myproga.lock");
if (flock(FILE,LOCK_EX | LOCK_NB)!=1){exit 0;}
...
...


А типа так ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)