Разработка

Cron-выражения: 15 готовых расписаний и ловушки с часовыми поясами

Синтаксис cron умещается в одну строку, но рано или поздно сбивает с толку каждого — обычно в 2 часа ночи в ночь перехода на летнее время. Разберём, как устроены пять полей, приведём расписания, которые можно скопировать, и ловушки, о которых стоит знать.

Начинающий · Чтение: 7 мин · Обновлено 30 октября 2026 г.

Cron-выражения: 15 готовых расписаний и ловушки с часовыми поясами

Пять полей

┌──────── minute (0–59)
│ ┌────── hour (0–23)
│ │ ┌──── day of month (1–31)
│ │ │ ┌── month (1–12)
│ │ │ │ ┌ day of week (0–6, Sunday = 0)
* * * * *

Каждое поле принимает значение (5), список (1,15), диапазон (1-5), шаг (*/10) или * — для любого значения. Некоторые системы (Quartz, AWS EventBridge) добавляют поле секунд или года, поэтому проверьте, для какой версии вы пишете.

Расписания для копирования

ВыражениеКогда запускается
*/5 * * * *Каждые 5 минут
0 * * * *Каждый час, в начале часа
15 */2 * * *На 15-й минуте каждые 2 часа
0 9 * * *Каждый день в 09:00
30 2 * * *Каждый день в 02:30 (см. ловушку с летним временем ниже)
0 9 * * 1-5По будням в 09:00
0 18 * * 5По пятницам в 18:00
0 0 * * 0По воскресеньям в полночь
0 0 1 * *Первый день каждого месяца
0 0 1 1 *Раз в год, 1 января
0 8 1,15 * *1-го и 15-го числа в 08:00
*/15 9-17 * * 1-5Каждые 15 минут в рабочее время
0 0 * * 6,0В полночь по выходным
0 3 * 1,4,7,10 *Ежедневно в 03:00 в первый месяц каждого квартала
0 12 * * *Ежедневно в полдень

Составить выражение или перевести любое из них в понятный текст можно с помощью Генератора cron-выражений, который также показывает время следующих запусков.

Ловушка: день месяца против дня недели

Если ограничены и поле дня месяца, и поле дня недели, стандартный cron запускает задачу, когда совпадает любое из них, а не оба сразу. 0 9 13 * 5 запускается 13-го числа каждого месяца и каждую пятницу, а не только в пятницу 13-го. Чтобы запускать задачу в последний рабочий день или в первый понедельник, настройте ежедневный запуск и проверяйте дату в скрипте либо используйте планировщик с расширениями вроде L и #.

Часовые пояса и летнее время

  • Серверы и CI работают в UTC. Расписания GitHub Actions, большинство контейнеров и облачных планировщиков используют UTC. 09:00 по нью-йоркскому времени — это 0 14 * * * зимой и 0 13 * * * летом. Пересчитать время можно с помощью Конвертера часовых поясов, а сразу несколько поясов посмотреть на Мировых часах.
  • Задачи между 01:00 и 03:00 по местному времени рискованны. При переходе на летнее время 02:30 не существует, и задача может быть пропущена; при переходе на зимнее она может запуститься дважды. Критичные задачи planируйте вне этого окна или запускайте планировщик в UTC.
  • GitHub Actions может запускать задачи с опозданием на несколько минут в часы пик, а в репозиториях без активности в течение 60 дней расписание отключается. Создать workflow можно с помощью Генератора GitHub Actions.

Часто задаваемые вопросы

Что означает */5 в cron?
Каждое пятое значение в этом поле. В поле минут */5 означает минуты 0, 5, 10 … 55, то есть каждые пять минут.
Воскресенье — это 0 или 7?
В большинстве реализаций cron работают оба варианта: 0 и 7 означают воскресенье. Для переносимости используйте 0.
Какой часовой пояс использует cron?
Часовой пояс машины или планировщика. Linux cron использует системный часовой пояс (в некоторых версиях его можно переопределить через CRON_TZ), а GitHub Actions и большинство облачных планировщиков используют UTC.

Читайте также