Что такое cron
Cron — стандартный планировщик задач в Unix/Linux/macOS. Создан в 1975 году в AT&T Bell Labs. Файл /etc/crontab содержит «расписания» (cron expressions) — короткие текстовые формулы, описывающие когда запускать команды.
Расшифровка cron-выражения вручную требует знания всех правил и спецсимволов. Этот инструмент — обратная задача к классическим cron-генераторам: вы вводите готовое выражение, получаете описание на русском плюс 5 следующих времён запуска.
Синтаксис 5 полей
Cron-выражение — 5 полей, разделённых пробелами:
* * * * * | | | | | | | | | └── день недели (0-7, где 0 и 7 = воскресенье, 1=пн) | | | └──── месяц (1-12, или jan-dec) | | └────── день месяца (1-31) | └──────── час (0-23) └────────── минута (0-59)
Каждое поле принимает:
*— любое значение из диапазона.5— конкретное значение.1-5— диапазон от 1 до 5 включительно.*/15— каждые 15 единиц от 0. Эквивалент0,15,30,45.1,3,5— список значений.10-30/5— от 10 до 30, каждые 5.
Note: The day of a command's execution can be specified by two fields — day of month, and day of week. If both fields are restricted, the command will be run when either field matches the current time. For example, "30 4 1,15 * 5" would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus every Friday.— man 5 crontab, GNU/Linux
Популярные шаблоны
- 0 9 * * 1-5 — будни в 9:00 (рассылка, создание отчётов)
- */15 * * * * — каждые 15 минут (мониторинг, health check)
- 0 0 1 * * — 1-го числа каждого месяца в полночь (биллинг, ротация логов)
- 0 3 * * 0 — воскресенье 3:00 (бэкап БД)
- 0 9-17 * * 1-5 — каждый час с 9 до 17 в будни (alerts, sync)
- 30 2 * * * — каждый день в 2:30 ночи (cleanup, индексация)
- 0 0 1 1 * — 1 января в полночь (годовой запуск)
- @daily — alias для 0 0 * * * (раз в день в полночь)
- 0 */6 * * * — каждые 6 часов (00:00, 06:00, 12:00, 18:00)
- 0 22 * * 0-4 — пн-пт в 22:00 (закрытие смены)
Альтернативы cron
- systemd timers. Современная замена cron в Linux. Лучшая интеграция с journald, поддержка зависимостей, безопасность через sandboxing. Использует OnCalendar=, который более читабелен (Mon..Fri 09:00).
- Quartz (Java). Платформа для Spring/JEE. 6 или 7 полей (плюс секунды и год). Поддерживает «3-й вторник месяца» через #.
- Anacron. Для систем, которые не работают 24/7 (ноутбуки). Догоняет пропущенные запуски при следующем включении.
- GitHub Actions / GitLab CI. schedule: cron-формат для запуска CI в облаке.
- AWS EventBridge / GCP Cloud Scheduler. Облачные cron-сервисы. Тот же синтаксис, но запускают Lambda / Cloud Functions.
- POSIX crontab specification. IEEE / Open Group. pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html. 2018.
- man crontab 5 — GNU/Linux. Linux Documentation Project. man7.org/linux/man-pages/man5/crontab.5.html. 2024.
- systemd.time — Time and Date Specifications. systemd. freedesktop.org/software/systemd/man/systemd.time.html. 2024.
