Таким образом, я пытаюсь настроить задание крона как своего рода сторожевой таймер для демона, которого я создал. Если ошибки демона и сбои, я хочу, чтобы задание крона периодически перезапустило его... Я не уверен, насколько возможный это, но я прочитал несколько учебных руководств по крону и не мог найти ничего, что сделает то, что я ищу...
Мой демон начинает из сценария оболочки, таким образом, я действительно просто ищу способ выполнить задание крона, ТОЛЬКО ЕСЛИ предыдущее выполнение того задания все еще не работает.
Я нашел это сообщение, которое действительно предоставляло решение для того, что я пытаюсь сделать файлы блокировки использования, не я не уверен, существует ли лучший способ сделать это...
Спасибо за помощь.
Я делаю это для написанной мной программы диспетчера очереди печати, это просто сценарий оболочки:
#!/bin/sh
if ps -ef | grep -v grep | grep doctype.php ; then
exit 0
else
/home/user/bin/doctype.php >> /home/user/bin/spooler.log &
#mailing program
/home/user/bin/simplemail.php "Print spooler was not running... Restarted."
exit 0
fi
Он запускается каждые две минуты и довольно эффективен. У меня есть электронное письмо со специальной информацией, если по какой-то причине процесс не запущен.
Не пытайтесь сделать это через cron. Пусть cron запускает сценарий независимо от того, что происходит, а затем сценарий определяет, запущена ли программа, и запускает ее при необходимости (обратите внимание, что для этого можно использовать Ruby, Python или ваш любимый язык сценариев)
.Я бы рекомендовал использовать существующий инструмент, такой как monit, он будет отслеживать и автоматически перезапускать процессы. Более подробная информация доступна здесь. Она должна быть легко доступна в большинстве дистрибутивов.
В продолжение ответа Earlz, вам нужен сценарий-обертка, который создает файл $PID.running, когда он запускается, и удаляет его, когда он заканчивается. Сценарий-обертка вызывает сценарий, который вы хотите запустить. Обертка необходима на случай, если целевой скрипт не выполнится или выйдет из строя, файл pid будет удален...