Cron-вираз — це компактний спосіб описати розклад повторюваного запуску задачі, який використовується в Unix-подібних системах ще з 1970-х років. П'ять полів, розділених пробілами, здатні виразити практично будь-який регулярний розклад.
П'ять полів вирazу
Стандартний cron-вираз має вигляд хвилина година день-місяця місяць день-тижня. Наприклад, 30 14 * * 1 означає "о 14:30 щопонеділка" — зірочки означають "будь-яке значення" для дня місяця й місяця.
Значення слешів і ком
Слеш після зірочки, як у */15 * * * *, означає "кожні 15 одиниць" — у цьому випадку кожні 15 хвилин. Кома дозволяє перелічити кілька конкретних значень, наприклад 0 9,18 * * * запускає задачу двічі на день: о 9:00 та 18:00.
Чому поле "день тижня" плутає найчастіше
У стандартному cron і поле "день місяця", і поле "день тижня" можуть бути одночасно вказані не як зірочка — у такому разі задача запускається, якщо збігається хоча б одна з двох умов (логічне АБО, а не І), що суперечить інтуїтивному очікуванню.
Навіщо це потрібно
- Розшифрувати чужий cron-вираз у конфігурації сервера чи CI/CD-пайплайна.
- Перевірити правильність написаного розкладу перед деплоєм у продакшн.
- Спланувати точний час наступних кількох запусків задачі.
Перехід на літній/зимовий час і cron
Якщо планувальник працює в поясі з переходом на літній/зимовий час, задача, запланована на неіснуючу годину (наприклад, 2:30 у ніч переведення годинників уперед), може не запуститися того дня, а запланована на годину, що повторюється при переведенні назад, — запуститися двічі. Тому для критичних задач часто обирають час поза типовим вікном переходу (наприклад, опівночі чи 3-4 годину ночі) або явно фіксують часовий пояс UTC.