Перезапуск сценария оболочки с использованием &disown Monit

У меня есть сценарий оболочки, который выполняет почтовую систему бэкенда C++ (PluginHandler). Я должен контролировать этот процесс в Monit и перезапустить его, если он перестал работать.

Сценарий:

export LD_LIBRARY_PATH=/usr/local/lib/:/CONFIDENTAL/CONFIDENTAL/Common/
cd PluginHandler/
./PluginHandler

Этот сценарий не имеет файла PID, и мы запускаем этот скрипт путем выполнения

./rundaemon.sh &disown

./pluginhandler запускает процесс и начинает входить в /etc/output/output.log, я останавливаю процесс путем идентификации идентификатора процесса с [PS-f | grep PluginHandler] и затем уничтожения процесса.

Я могу проверить процесс в Monit очень хорошо, но я думаю, что Monit запускает процесс, если он не работает, но он не может сделать &disown так концы процесса, как только он запускается.

Это - код в monitrc файле для проверки этого процесса:

check process Backend
matching "PluginHandler"
if not exist
then alert
start "PATH/TO/SCRIPT/rundaemon.sh &disown"
alert example@gmail.com only on {timeout} with mail-format {subject: "[BLAH"}

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

export LD_LIBRARY_PATH=/usr/local/lib/:/home/CONFIDENTAL/production/CONFIDENTAL/Common/
cd PluginHandler/
(nohup ./PluginHandler &)
return

Любая справка, чтобы записать надлежащему Monit правила решить этот вопрос значительно ценилась бы :)

0
задан 25 August 2014 в 17:31
1 ответ

Не используйте отключение...

Я не знаю полного содержания скрипта, но вы должны действительно попытаться использовать PID-файл, если это возможно. Но вы можете использовать Monit для запуска и остановки процесса независимо от этого.

check process Backend
        matching "PluginHandler"
        start program = "/path/to/rundaemon.sh" as uid user
        stop program = "/usr/bin/pkill -f PluginHandler"

Только это позволит убедиться, что процесс работает. Вы, вероятно, захотите что-нибудь более конкретное в строке "соответствие". Протестируйте с помощью monit procmatch , чтобы увидеть, что Monit обнаружит. Вы можете запустить процесс с помощью монитора Backend и остановить его с помощью монитора Backend, при условии, что есть изящный способ остановить скрипт.

.
0
ответ дан 5 December 2019 в 13:31

Теги

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