У меня есть задание cron, которое копирует некоторые файлы и тому подобное. Время от времени он будет давать сбой из-за недоступности хоста. Когда это начинается в случае неудачи я хотел бы получать уведомление, но я не хочу, чтобы каждые 5 минут приходили сообщения о том, что проблема не устранена.
Я могу придумать, как собрать решение, но мне интересно, существует ли уже где-то эта функция? Сервер - это OSX, но у меня есть доступ только к нему.
Что ж, простое решение - просто прикоснуться к файлу «состояния» после первого сбоя и уведомления. Затем при следующем запуске сценария проверьте наличие этого файла состояния и, если он существует, пропустите уведомление. При следующей успешной копии удалите файл состояния.
Что-то вроде контролировать потенциально может делать то, что вы хотите. Пусть ваш сценарий записывает свои ошибки в файл, а затем настройте monit для отправки предупреждения, когда журнал впервые станет ненулевым. Синтаксис чрезвычайно гибкий, поэтому я уверен, что вы можете настроить определение так, чтобы оно делало именно то, что вам нужно.
# cront
0 0 0 0 0 root script 2>&1 > /var/scripts/myscript_state
#monit config
check file myscriptdata with path /var/scripts/myscript_state
if changed size then alert