Быть уведомленным относительно неудавшихся заданий крона

Я обеспокоен, что задания крона могут перестать работать тихо в течение неопределенного промежутка времени на ванильном Рабочем столе Ubuntu 12.04.1 (Точный), и никто не заметит. Я хотел бы получить уведомление каждый раз, когда системное задание крона печатает некоторый вывод или просто перестало работать.

Я знаю, что возможно установить почтовый сервер (например, постфикс), настроить его для локально-единственной доставки, настроить псевдоним так, чтобы почта корня была поставлена моему обычному пользователю, считают и настраивают почтовый клиент для проверки моего локального почтового ящика.

Там какие-либо легкие альтернативы к этому решению в Ubuntu?

5
задан 30 August 2012 в 13:53

8 ответов

Вы могли перенаправить вывод ошибок своей команды cronjob в файл. Вот пример строки в /etc/crontab:

01 3    * * *   user    /bin/command 2>> /var/log/some.file

Затем, по крайней мере, Вы получили подсказку, если ошибки произошли. Вы могли бы даже записать, что сценарий для уведомления Вас уведомляет-osd или подобные инструменты, когда файл изменяется.

Редактирование:

файл /var/log/syslog сообщает о сообщениях от крона также. Вы могли бы хотеть смотреть на это. Чтобы получить специализированный файл журнала для крона deamon редактирование /etc/rsyslog.d/50-default.conf и не комментировать/редактировать строку, которая говорит:

#cron.*             /var/log/cron.log

не знают то, что Вы найдете там, но стоящий попытки. Отчет, как это пошло.

3
ответ дан 21 October 2019 в 12:36

"Я хотел бы получить уведомление каждый раз, когда системное задание крона печатает некоторый вывод или просто перестало работать".

я рекомендовал бы использовать своего рода контрольный инструмент крона. Существуют некоторые там, но я в настоящее время использую Мертвеца, Умыкают ( https://deadmanssnitch.com ) и как он. Это предупредит Вас, когда задание крона не зарегистрируется. Как Вы делаете, просто завихряетесь, Ваши уникальные умыкают URL после задания и поражают URL. Существуют немногие другие там как probyapp, но они не свободны... удача.

1
ответ дан 21 October 2019 в 12:36

Я сделал что-то как следование, но мой вариант использования для сценария или исполняемого набора в кроне:

0 1,13 * * * /usr/bin/php /var/www/html/script.php > /tmp/script.log 2>&1 ; [ $? -ne 0 ] && mail -s "Cron Failure Report `date` " my.email@mail.com <<< "Cron script.php Failed in Execution"

надежда это помогает!

Для приложения в масштабе всей системы, DMS является опцией. Любезно обновите, если Вы нашли, что путь кроме этого сделал это.

0
ответ дан 21 October 2019 в 12:36

Вы попытались писать сценарий? Я уверен, что существует простой способ как:

if cron.output = fail then notify-send "sorry bro"

-1
ответ дан 21 October 2019 в 12:36

Jenkins является довольно полезным инструментом для этого вида вещи. Я знаю, что люди склонны думать о нем как о CI, но это - действительно просто инструмент выполнения задания. Это получит вывод, время выполнения и состояние кода выхода задания, которое это использует, чтобы определить, является ли задание отказом.

можно установить ssh-агент, чтобы сделать, чтобы Jenkins соединился с удаленной машиной, запланировал задания, чтобы работать точно так же, как кроны, автоматически расположить их с интервалами на основе времени выполнения (вместо "3:00"), цепочечные зависимости, повернуть журналы вывода на основе на задание и интегрироваться с набором внешних систем (Слабый, Hipchat, и т.д.) через плагины, которые будут уведомлены относительно отказов.

В прошлый раз, когда я настроил это, это была огромная справка. Мы сразу знали, если были проблемы где-нибудь и смогли централизованно управлять и отследить кроны от нескольких различных систем.

1
ответ дан 17 November 2019 в 11:47

На современном системном использовании Ubuntu

journalctl -u cron.service -x

Для уведомления ошибки, не посылая электронные письма попробуйте это:

0 1,13 * * * /usr/bin/php /var/www/html/script.php > /tmp/script.log 2>&1 ; [ $? -ne 0 ] && notify-send -u critical -t 3000 "Cron script.php Failed in Execution" "Type journalctl -u cron.service -x to see more details"
0
ответ дан 17 November 2019 в 11:47

сеть cronwrap 1.4

: https://pypi.org/project/cronwrap /

обертка задания крона А, которая переносит задания и включает лучшее сообщение об ошибке и тайм-ауты команды.

Установка с:

pip install cronwrap
0
ответ дан 17 November 2019 в 11:47

Попробуйте это (показан пример; обсуждение здесь: https://unix.stackexchange.com/questions/265026/rsyncs-read-only-file-system-30-error/ 613594#613594):

## all as one line (broken here for readability):

0  5  *  *  *  <your_username>  nice -n 19
  rsync -aq --delete /mnt/Music/ /mnt/Music_Backups ; EXIT_STATUS=$?;
  if [ $EXIT_STATUS -ne 0 ]; then
  notify-send -i warning -t 0 "/etc/crontab for rsync'd Music Backups failed"
  --icon=dialog-information ;
  mutt -s "/etc/crontab for rsync'd Music Backups failed" <your_email_address>; fi
0
ответ дан 30 November 2020 в 20:34

Другие вопросы по тегам:

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