Я обеспокоен, что задания крона могут перестать работать тихо в течение неопределенного промежутка времени на ванильном Рабочем столе Ubuntu 12.04.1 (Точный), и никто не заметит. Я хотел бы получить уведомление каждый раз, когда системное задание крона печатает некоторый вывод или просто перестало работать.
Я знаю, что возможно установить почтовый сервер (например, постфикс), настроить его для локально-единственной доставки, настроить псевдоним так, чтобы почта корня была поставлена моему обычному пользователю, считают и настраивают почтовый клиент для проверки моего локального почтового ящика.
Там какие-либо легкие альтернативы к этому решению в Ubuntu?
Вы могли перенаправить вывод ошибок своей команды 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
не знают то, что Вы найдете там, но стоящий попытки. Отчет, как это пошло.
"Я хотел бы получить уведомление каждый раз, когда системное задание крона печатает некоторый вывод или просто перестало работать".
я рекомендовал бы использовать своего рода контрольный инструмент крона. Существуют некоторые там, но я в настоящее время использую Мертвеца, Умыкают ( https://deadmanssnitch.com ) и как он. Это предупредит Вас, когда задание крона не зарегистрируется. Как Вы делаете, просто завихряетесь, Ваши уникальные умыкают URL после задания и поражают URL. Существуют немногие другие там как probyapp, но они не свободны... удача.
Я сделал что-то как следование, но мой вариант использования для сценария или исполняемого набора в кроне:
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 является опцией. Любезно обновите, если Вы нашли, что путь кроме этого сделал это.
Вы попытались писать сценарий? Я уверен, что существует простой способ как:
if cron.output = fail then notify-send "sorry bro"
Jenkins является довольно полезным инструментом для этого вида вещи. Я знаю, что люди склонны думать о нем как о CI, но это - действительно просто инструмент выполнения задания. Это получит вывод, время выполнения и состояние кода выхода задания, которое это использует, чтобы определить, является ли задание отказом.
можно установить ssh-агент, чтобы сделать, чтобы Jenkins соединился с удаленной машиной, запланировал задания, чтобы работать точно так же, как кроны, автоматически расположить их с интервалами на основе времени выполнения (вместо "3:00"), цепочечные зависимости, повернуть журналы вывода на основе на задание и интегрироваться с набором внешних систем (Слабый, Hipchat, и т.д.) через плагины, которые будут уведомлены относительно отказов.
В прошлый раз, когда я настроил это, это была огромная справка. Мы сразу знали, если были проблемы где-нибудь и смогли централизованно управлять и отследить кроны от нескольких различных систем.
На современном системном использовании 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"
: https://pypi.org/project/cronwrap /
обертка задания крона А, которая переносит задания и включает лучшее сообщение об ошибке и тайм-ауты команды.
Установка с:
pip install cronwrap
Попробуйте это (показан пример; обсуждение здесь: 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