Усі статті

Cron-вирази: як розшифрувати розклад запуску завдань

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.

Спробувати інструмент