Самая частая причина, по которой я видел сбой cron в неверно указанном расписании. Требуется практика, чтобы указать работу, запланированную на 23:15, 15 23 * * *
вместо * * 11 15 *
или 11 15 * * *
. День недели для рабочих мест после полуночи также запутывается, MF - 2-6
после полуночи, нет 1-5
. Конкретные даты, как правило, являются проблемой, поскольку мы редко используем их * * 3 1 *
не 3 марта. Если вы не уверены, проверьте расписание cron онлайн на https://crontab.guru/ .
Если вы работаете с разными платформами, используя неподдерживаемые параметры, такие как 2/3
временные спецификации, это также может привести к сбоям. Это очень полезная опция, но она не всегда доступна. Я также сталкивался с проблемами со списками как 1-5
или 1,3,5
.
Использование неквалифицированных путей также вызвало проблемы. Путь по умолчанию обычно /bin:/usr/bin
таков, что будут выполняться только стандартные команды. Эти каталоги обычно не имеют желаемой команды. Это также влияет на сценарии, использующие нестандартные команды. Другие переменные среды также могут отсутствовать.
Полное уничтожение существующего crontab вызвало у меня проблемы. Я сейчас загружаю из файла копию. Это может быть восстановлено из существующего crontab, используя, crontab -l
если он забит. Я храню копию crontab в ~ / bin. Это комментируется повсюду и заканчивается строкой # EOF
. Это загружается ежедневно из записи в crontab, например:
#! / USR / бен / кронтаб
# Перезагрузить этот crontab
#
54 12 * * * $ {HOME} / bin / crontab
Приведенная выше команда reload опирается на исполняемый файл crontab с путём взрыва, на котором выполняется crontab. В некоторых системах требуется запуск crontab в команде и указание файла. Если каталог является сетевым, то я часто использую crontab.$(hostname)
в качестве имени файла. Это в конечном счете исправит случаи, когда неправильный crontab загружен на неправильный сервер.
Использование файла обеспечивает резервное копирование того, каким должен быть crontab, и позволяет crontab -e
автоматически откатывать временные изменения (единственное время, которое я использую ). Доступны заголовки, которые помогают правильно настроить параметры планирования. Я добавил их, когда неопытные пользователи будут редактировать crontab.
Редко я сталкивался с командами, которые требуют ввода пользователя. Они терпят неудачу при crontab, хотя некоторые будут работать с перенаправлением ввода.
crontab -e
чтобы cron вступил в силу. Например, используя vim, я редактирую файл и использую его:w
для записи, но задание не добавляется в cron, пока я тоже не выйду. Так что я не увижу работу до тех пор, пока я:q
тоже.