Выполненное задание крона, только если это уже не работает

Таким образом, я пытаюсь настроить задание крона как своего рода сторожевой таймер для демона, которого я создал. Если ошибки демона и сбои, я хочу, чтобы задание крона периодически перезапустило его... Я не уверен, насколько возможный это, но я прочитал несколько учебных руководств по крону и не мог найти ничего, что сделает то, что я ищу...

Мой демон начинает из сценария оболочки, таким образом, я действительно просто ищу способ выполнить задание крона, ТОЛЬКО ЕСЛИ предыдущее выполнение того задания все еще не работает.

Я нашел это сообщение, которое действительно предоставляло решение для того, что я пытаюсь сделать файлы блокировки использования, не я не уверен, существует ли лучший способ сделать это...

Спасибо за помощь.

117
задан Community 23 May 2017 в 10:31
поделиться

4 ответа

Я делаю это для написанной мной программы диспетчера очереди печати, это просто сценарий оболочки:

#!/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

Он запускается каждые две минуты и довольно эффективен. У меня есть электронное письмо со специальной информацией, если по какой-то причине процесс не запущен.

113
ответ дан 24 November 2019 в 02:04
поделиться

Не пытайтесь сделать это через cron. Пусть cron запускает сценарий независимо от того, что происходит, а затем сценарий определяет, запущена ли программа, и запускает ее при необходимости (обратите внимание, что для этого можно использовать Ruby, Python или ваш любимый язык сценариев)

.
22
ответ дан 24 November 2019 в 02:04
поделиться

Я бы рекомендовал использовать существующий инструмент, такой как monit, он будет отслеживать и автоматически перезапускать процессы. Более подробная информация доступна здесь. Она должна быть легко доступна в большинстве дистрибутивов.

3
ответ дан 24 November 2019 в 02:04
поделиться

В продолжение ответа Earlz, вам нужен сценарий-обертка, который создает файл $PID.running, когда он запускается, и удаляет его, когда он заканчивается. Сценарий-обертка вызывает сценарий, который вы хотите запустить. Обертка необходима на случай, если целевой скрипт не выполнится или выйдет из строя, файл pid будет удален...

5
ответ дан 24 November 2019 в 02:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: