2016-12-19 10 views
0

Что я хотел бы сделать, заключается в следующем:монит вызов Exec на восстановлении процесса

  • если процесс-й не удается ((перо) запуск), а затем выполнить CMD-х
  • если он восстанавливается затем execute cmd-y

Для оповещения по электронной почте по умолчанию при восстановлении отправляется уведомление об ошибке по умолчанию. Однако для метода exec я не могу найти способ сделать эту работу. Если бы я попробовать это в monitrc:

check process proc_x with pidfile /var/run/proc_x.pid 
    start program = "/bin/sh -c '/etc/init.d/Sxxproc_x start'" 
    stop program = "/bin/sh -c '/etc/init.d/Sxxproc_x stop'" 
    if 3 restarts within 5 cycles then exec "<some error cmd>" 
    else if succeeded then exec "<some restore cmd>" 

это приводит к «синтаксической ошибки„еще“». Если я удаляю строку else, команда error вызывается как ожидалось. По-видимому, «else» не может быть использован для теста . Но как я могу добавить для выполнения команды запуск программы или восстановление?

ответ

0

Я нашел решение благодаря ответу на эту тему:

get monit to alert first and restart later

«, если не существует для ...» с соответствующими «еще» сделал трюк для меня сообщите о выздоровлении. Отчет об ошибке является отдельным. Мой код monitrc:

check process proc_x with pidfile /var/run/proc_x.pid 
    start program = "/bin/sh -c '/etc/init.d/Sxxproc_x start'" 
    stop program = "/bin/sh -c '/etc/init.d/Sxxproc_x stop'" 
    if 1 restart within 1 cycle then exec "<some error cmd>" 
     repeat every 1 cycle 
    if not exist for 3 cycles then restart 
    else if succeeded 2 times within 2 cycles then exec "<some restore cmd>"