Crontab и перенос строки

Почему последняя строка в crontab должна заканчиваться переводом строки, и что произойдет, если этого не сделать

Неожиданная проблема с cron

Сегодня обнаружил, что на тестовом сервере не работает одно из заданий cron - рассылка писем. Каждое утро скрипт, вызываемый cron’ом, должен был отправлять спам-напоминания о незавершённых задачах.

Задание в crontab я добавил позавчера вечером. Ни вчера, ни сегодня на почту ничего не пришло. Сначала подумал, что, возможно, проблема в самом скрипте. Запустил вручную - письма пришли как положено. Тогда полез в логи cron’а и обнаружил, что скрипт рассылки вообще не вызывается.

В чём была ошибка

При просмотре списка заданий crontab ничего не вызывало подозрений: всё было в правильном формате, пути к скриптам корректные. Однако строка с командой, которая не выполнялась, была последней в списке.

Вот тут-то я и провтыкал - забыл добавить перевод строки в конце. В crontab последняя запись обязательно должна заканчиваться переводом строки. Если его нет, cron просто игнорирует последнюю строку.

Иначе говоря, после последней команды в crontab должна быть пустая строка. Будьте внимательны и не повторяйте мою ошибку.

Полезно знать

Логи cron’а за прошедший день обычно можно найти в файле:

1
/var/log/cron
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Создано при помощи Hugo
Тема Stack, дизайн Jimmy