Ближайшие запуски

Планировщики по-разному обрабатывают детали вроде дня месяца и дня недели или перехода на летнее время. Проверьте расписание в своей системе перед использованием в продакшене.

Генератор cron-выражений объясняет любое расписание crontab простыми словами и показывает 10 ближайших запусков в выбранном часовом поясе. Соберите выражение по полям или вставьте готовое из crontab, CronJob в Kubernetes, GitHub Actions, Quartz или Spring @Scheduled и переключайтесь между синтаксисом Unix, Quartz и Spring.

Как пользоваться

  1. Введите или вставьте cron-выражение либо выберите шаблон. Формат определяется числом полей: 5 — Unix crontab, 6 — Spring (сначала секунды), 7 или знак ? — Quartz.
  2. Прочитайте описание простыми словами и 10 ближайших запусков. Выберите часовой пояс, чтобы увидеть время запуска там; нажмите на время, чтобы скопировать его в ISO 8601.
  3. В конструкторе меняйте поля по одному: любое значение, интервал, конкретные значения или диапазон.
  4. При переключении между Unix, Quartz и Spring выражение по возможности конвертируется.
  • В Unix cron, если ограничены и день месяца, и день недели, задача запускается, когда совпадает любое из них (ИЛИ). В Quartz одно из полей должно быть ?, в Spring должны совпасть оба.
  • Дни недели в Unix — 0–7 (0 и 7 = воскресенье); в Quartz — 1–7, где 1 = воскресенье. Названия вроде MON-FRI работают везде.
  • Quartz и Spring также поддерживают L (последний день), W (ближайший будний день), 5L (последняя пятница) и 2#1 (первый понедельник).
  • Время, попадающее в «дыру» при переходе на летнее время, пропускается; демоны cron ведут себя по-разному.

Пять полей Unix cron

Стандартная строка crontab состоит из пяти полей: минута (0–59), час (0–23), день месяца (1–31), месяц (1–12 или JAN–DEC) и день недели (0–7, где 0 и 7 — воскресенье, или SUN–SAT). * означает любое значение, запятая перечисляет (1,15), дефис задаёт диапазон (9-17), а косая черта — шаг (*/15 — это 0, 15, 30 и 45).

Например, 30 2 * * 1-5 запускается в 02:30 с понедельника по пятницу, а 0 */6 * * * — в 00:00, 06:00, 12:00 и 18:00. Сокращения @hourly, @daily, @weekly и @monthly означают 0 * * * *, 0 0 * * *, 0 0 * * 0 и 0 0 1 * *.

Чем отличаются Quartz и Spring

В Quartz есть поле секунд в начале и необязательный год в конце, дни недели нумеруются 1–7 начиная с воскресенья, а в дне месяца или дне недели обязателен знак ?. Spring @Scheduled использует шесть полей (секунды первыми) и дни недели 0–7. Оба понимают L — последний день, W — ближайший рабочий день, 6L — последнюю пятницу и 2#1 — первый понедельник месяца.

Подводные камни

Если в Unix cron ограничены и день месяца, и день недели, задача запускается, когда совпадает любое из них: 0 0 13 * 5 сработает каждое 13-е число и каждую пятницу, а не только в пятницу 13-го. Демоны cron работают в часовом поясе сервера, если не задан другой, а GitHub Actions всегда считает время в UTC. При переходе на летнее время задача на 02:30 может пропуститься или выполниться дважды, поэтому важные задачи лучше планировать в UTC.

Частые вопросы

Что означает * * * * *?

Запуск каждую минуту каждого часа каждого дня — 1440 раз в сутки. Каждая * означает все значения своего поля в порядке: минута, час, день месяца, месяц, день недели.

Как запускать задачу cron каждые 5 минут?

Используйте */5 * * * *. Запуск будет на 0, 5, 10 и так далее до 55-й минуты — 288 раз в сутки. Чтобы сдвинуть начало, напишите, например, 2-59/5 * * * *.

В каком часовом поясе работает cron?

Классический cron работает в локальном поясе сервера. Некоторые системы понимают CRON_TZ или настройку timeZone, у CronJob в Kubernetes есть поле timeZone, а GitHub Actions всегда использует UTC. Выберите пояс здесь, чтобы увидеть время запусков.

Чем Unix cron отличается от Quartz cron?

В Unix cron 5 полей, первое — минуты. В Quartz 6 или 7 полей: сначала секунды, в конце может быть год; воскресенье — это 1, а в одном из двух полей дня нужен знак ?.

Как запустить задачу в последний день месяца?

В Quartz и Spring есть L в поле дня месяца: 0 0 0 L * ? в Quartz. В стандартном Unix cron L нет; обычно задачу запускают 28–31 числа, а скрипт проверяет, будет ли завтра первое число.

Почему cron-задача не запустилась в нужное время?

Проверьте часовой пояс сервера, не объединены ли по ошибке день месяца и день недели и работает ли команда в урезанном окружении cron, где PATH и переменные отличаются от вашей оболочки.

Часто используют вместе

Как пользоваться

Шаги

  1. Введите или вставьте cron-выражение либо выберите шаблон. Формат определяется числом полей: 5 — Unix crontab, 6 — Spring (сначала секунды), 7 или знак ? — Quartz.
  2. Прочитайте описание простыми словами и 10 ближайших запусков. Выберите часовой пояс, чтобы увидеть время запуска там; нажмите на время, чтобы скопировать его в ISO 8601.
  3. В конструкторе меняйте поля по одному: любое значение, интервал, конкретные значения или диапазон.
  4. При переключении между Unix, Quartz и Spring выражение по возможности конвертируется.

Горячие клавиши

Ctrl + EnterСкопировать выражениеEnterОбновить

Полезно знать

Работает в браузере. Файлы и текст не покидают ваше устройство.