Вот конфиг, который будет достичь того, чего вы хотите:
check process nginx with pidfile /usr/local/var/run/nginx.pid
start program = "/usr/local/bin/nginx -s start"
stop program = "/usr/local/bin/nginx -s stop"
if uptime > 3 days then exec "/usr/local/bin/nginx -s reload"
Я попробовал это на моей конфигурации. Единственная проблема, которую я вижу, это то, что Монит предполагает, что вы определяете условие ошибки при проверке времени безотказной работы, как это. Команда nginx -s reload
, как я вижу на моей машине, не перезагружает время работы до 0. Поскольку Monit считает, что время безотказной работы> 3 дня - это условие ошибки, которое исправляется командой, которую вы даете в конфиге, но что команда не сбрасывает время безотказной работы, чтобы быть менее 3-х дней, монят сообщит Uptime failed
как статус процесса, и вы увидите это в журналах:
error : 'nginx' uptime test failed for /usr/local/var/run/nginx.pid -- current uptime is 792808 seconds
вы увидите сотни этих , на самом деле (моя конфигурация работает Monit каждые 30 секунд, поэтому я получаю один из них каждые 30 секунд).
Один вопрос: я не уверен, что reload
ing nginx после долгого времени, как и 3 дня, сделают для него - полезно ли это сделать для nginx? Если у вас есть ссылка на информацию о том, почему это было бы полезно для nginx, это может помочь другим читателям попасть на эту страницу через поиск. Может быть, вы согласились с ответом, который вы сделали, потому что видели, что было бы разумно делать это, когда есть проблема, например, высокая память?
(старый пост, я знаю, но я попал сюда через Google и увидел, что принятый ответ был неполным, а также не полностью понимает намерение OP).
EDIT: а, я вижу, вы приняли свой собственный ответ. Виноват. Кажется, вы действительно видели, что было бессмысленно делать то, что вы изначально задавали, и вместо этого выбрали проверку памяти! Я оставлю свой пост, чтобы дать эту ясность другим читателям с той же путаницей.
Спасибо за ваш ответ. Я отредактировал свой вопрос, потому что не указал, что мне нужно перезагрузить, а также перезапустить. – Vimchester