Cron — демон планирования задач в Unix-системах, запускающий команды по расписанию. Используется для резервного копирования, отправки отчётов, обновления сертификатов SSL и любой автоматизации.
Синтаксис cron-записи
# ┌───────────── минуты (0-59)
# │ ┌─────────── часы (0-23)
# │ │ ┌───────── день месяца (1-31)
# │ │ │ ┌─────── месяц (1-12)
# │ │ │ │ ┌───── день недели (0=Sun, 6=Sat)
# │ │ │ │ │
# * * * * * команда
Примеры расписаний
| Выражение | Когда выполняется |
|---|---|
| * * * * * | Каждую минуту |
| 0 * * * * | Каждый час (в 00 минут) |
| 0 3 * * * | Каждый день в 03:00 |
| 0 3 * * 1 | Каждый понедельник в 03:00 |
| 0 0 1 * * | Первое число каждого месяца |
| */15 * * * * | Каждые 15 минут |
| 0 2,14 * * * | В 02:00 и 14:00 |
| @reboot | При каждой перезагрузке |
| @daily | Раз в сутки (= 0 0 * * *) |
Управление crontab
# Редактировать crontab текущего пользователя
crontab -e
# Посмотреть текущий crontab
crontab -l
# Удалить crontab
crontab -r
# Crontab для другого пользователя (root)
sudo crontab -u www-data -e
Практические примеры
# Бэкап базы данных каждые 6 часов
0 */6 * * * mysqldump -u root -pPASSWORD mydb > /backup/db_$(date +%Y%m%d_%H%M).sql
# Обновление Let's Encrypt сертификатов
0 3 * * * certbot renew --quiet
# Очистка логов старше 30 дней
0 4 * * * find /var/log/myapp -name "*.log" -mtime +30 -delete
# Запуск Python-скрипта и логирование вывода
*/30 * * * * /usr/bin/python3 /opt/scripts/sync.py >> /var/log/sync.log 2>&1
# Перезапуск сервиса в 05:00 каждое воскресенье
0 5 * * 0 systemctl restart myapp
Переменные окружения в cron
# Cron имеет минимальное окружение — $PATH может не содержать нужные пути
# Всегда используйте полные пути к командам
/usr/bin/php, /usr/local/bin/wp и т.д.
# Или явно задайте PATH в начале crontab:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=admin@example.com # отправлять ошибки на email
💡 Отладка cron: Добавьте
2>&1 >> /tmp/cron_debug.log к команде для захвата всего вывода. Если cron молчит при явной ошибке — скорее всего проблема с PATH или правами файла.