Как я могу настроить систему, чтобы сказать мне, если работа cron НЕ работает нормально? - PullRequest
2 голосов
/ 10 августа 2010

Это скорее проблема "общей архитектуры". Если у вас периодически запускается задание cron (или даже запланированное задание Windows), его довольно просто отправить по электронной почте / текстовому сообщению, что все хорошо, но как мне сообщать, когда все Не все в порядке? По сути, если задание не запускается в запланированное время или Windows / linux имеет собственный набор зависаний, препятствующих выполнению задания ...?

Просто искать мысли людей, которые сталкивались с этой ситуацией раньше и находили интересные решения ...

1 Ответ

0 голосов
/ 10 августа 2010

Один из способов, которые я делал в прошлом, - это просто поместить в начало каждого скрипта (скажем, checkUsers.sh):

touch /tmp/lastrun/checkUsers.sh

, затем периодически выполнять другую работу, использующую find, чтобы найти все те «маркерные» файлы в tmp/lastrun, которые старше, чем день.

Вы можете поиграться с таймингами, имея /tmp/lastrun/hour/ и tmp/lastrun/day/ для разделения заданий, которые имеют разные расписания.

Обратите внимание, что это не будет перехватывать сценарии, которые никогда не запускаются , поскольку они никогда не создадут исходный файл для find -ing.Чтобы облегчить это, вы можете:

  • создать этот файл вручную при создании задания cron (не обрабатывает ситуации, когда кто-то случайно удаляет файл маркера);или
  • вести список необходимых файлов маркеров где-нибудь, чтобы вы могли определить, когда они отсутствуют, а также устарели.

И, если ваша задача cron не является сценарием,поместите touch непосредственно в crontab:

0 4 * * * ( touch /tmp/lastrun/daily/checkUsers ; /usr/bin/checkUsers )

Проверить простой сценарий find гораздо проще, чем проверить каждое из ваших cron заданий.

...