crontab -e · различия среды · системный vs пользовательский crontab
Задачи обычно редактируют через crontab -e. Эта команда открывает crontab только текущего пользователя, а при сохранении проверяет синтаксис и применяет изменения. Список выводится командой crontab -l, полное удаление — crontab -r, но -r удаляет без подтверждения, поэтому будьте осторожны.
Среда, в которой cron выполняет задачи, отличается от оболочки, в которую вы вошли. cron предоставляет лишь минимальную среду, и PATH тоже обычно короткий, вроде /usr/bin:/bin. Поэтому команда, работавшая в вашей login-оболочке, в cron нередко завершается ошибкой «команда не найдена». Безопаснее указывать команды абсолютными путями.
В начале файла crontab можно объявить переменные среды. Часто используют PATH=/usr/local/bin:/usr/bin:/bin, SHELL=/bin/bash, MAILTO="you@example.com", а также CRON_TZ=Asia/Seoul, фиксирующий часовой пояс. Если в значении есть пробелы, заключите его в кавычки.
Формат пользовательского и системного crontab различается. Пользовательский crontab, созданный через crontab -e, — это стандартные 5 полей (минута час день месяц день недели). А системные записи в /etc/crontab и /etc/cron.d/* — это 6 полей (минута час день месяц день недели user команда), где после дня недели добавлено поле пользователя, от имени которого выполняется задача. Этот инструмент разбирает стандартные 5 полей, поэтому при проверке системного crontab уберите поле пользователя и вводите только первые 5 полей.
Если вместо точного времени достаточно уровня «ежедневно / ежечасно», можно просто положить скрипт в drop-in каталоги вроде /etc/cron.daily, /etc/cron.hourly. Они выполняются с заданной периодичностью без выражения. А выражение, составленное этим инструментом, добавляйте в crontab только тогда, когда нужны конкретные минута и время, — и управление станет аккуратнее.