Причины, по которым работа cron может потерпеть неудачу, действительно очень велики. Наиболее распространенные причины:
- Синтаксическая ошибка
- Использование исполняемого файла без правильного пути
- Использование переменной оболочки, которая не определена в среде cron
- Попытка открыть графический интерфейс без указания
DISPLAY
И так далее ...
Иногда действительно трудно понять, какая ошибка мешает выполнению задания. Есть ли способ обнаружения ошибок в заданиях cron?
Настройка локальной почты и получение выходных писем заданий cron
Когда задание cron запускается успешно или по какой-то причине не выполняется, демон cron автоматически отправляет электронное письмо пользователю, который установил cron работа. В этом письме содержится описание успешного задания или подробный отчет о том, почему конкретное задание cron не удалось.
Если ваша локальная почтовая система не настроена, вы не будете получать эти письма. Письма с выходом задания cron просто умирают в локальной папке спула. Так что вам нужно настроить демона почтовой программы для чтения этих писем. См. Этот ответ на Как читать локальную электронную почту в Thunderbird , чтобы получить все ваши местные письма.
Если ваш cronjob не удался, вы получите письмо с указанием причины сбоя. Это один из лучших способов обнаружить ошибку при установке задания cron.
Альтернативные способы
Согласно этому ответу можно получить ошибки cronjob в файле журнала, используя перенаправление. Но вам нужно установить перенаправление с вашим заданием cron и указать файл журнала самостоятельно.
И файл /var/log/syslog
всегда рядом, чтобы проверить, выполняется ли задание cron так, как вы ожидали.
Здесь содержится обширный ответ, который объясняет, как заставить систему 16.04 LTS создать отдельный файл cron.log и как создать команду wcron
, которая просматривает его в режиме реального времени.
16.04: Как заставить cron создать cron.log и следить за ним в режиме реального времени?
Он также содержит информацию об изменении уровней журнала, чтобы вы могли не видеть запускается только скрипт (по умолчанию), но также время окончания и ошибки.
Это ясно показывает любые ошибки, которые они генерируют.