Разбор Cron-выражений

Работает офлайнНичего не загружаетсяБесплатно, без регистрации

Собрать выражение

Разберите cron-выражение на понятные поля и увидьте следующие десять запусков в вашем часовом поясе и UTC — включая правило ИЛИ для дня месяца и дня недели из crontab(5), которое большинство инструментов молча нарушают.

Чтение выражения с одного взгляда

ВыражениеСмысл
*/5 * * * *каждые пять минут
0 * * * *в начале каждого часа
0 9 * * MON-FRI09:00 по будням
0 3 * * SUN03:00 каждое воскресенье — классическое окно бэкапа
0 0 1 * *полночь первого числа месяца
30 4 1,15 * 504:30 первого, пятнадцатого и каждую пятницу — правило ИЛИ

Ошибки, которые стоит знать по имени

Ловушка И/ИЛИ — та, что помечает эта страница: ограничьте оба поля дня, и они объединяются через ИЛИ, по crontab(5). Правило нарушается настолько часто, что проверка на нём — самый быстрый способ оценить любую cron-библиотеку. Граница полуночи: 0 0 * * MON срабатывает в первую секунду понедельника, а не в последнюю воскресенья. Шаги считаются от начала своего диапазона: */15 в поле минут — это 0, 15, 30, 45; а 5/15 — это 5, 20, 35, 50.

Всё работает в браузере; выражения никуда не отправляются.

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

Что означают пять полей?

По порядку: минута (0–59), час (0–23), день месяца (1–31), месяц (1–12 или JAN–DEC), день недели (0–7 или SUN–SAT; и 0, и 7 — воскресенье). Каждое поле принимает значение, список (1,15), диапазон (9-17), шаг (*/15) и их сочетания — 0 9 * * MON-FRI это девять утра по будням.

Что за правило ИЛИ, о котором предупреждает инструмент?

Когда ограничены ОБА поля дня, crontab(5) срабатывает на датах, подходящих под любое из них — не под оба. Пример из самого man: 30 4 1,15 * 5 запускается в 4:30 первого числа, пятнадцатого И каждую пятницу. Инструменты, объединяющие поля через И, молча запускают задачу заметно реже, чем задумал crontab; этот парсер реализует настоящее правило и помечает его.

В каком часовом поясе показаны запуски?

В обоих. Crontab срабатывает по настенным часам своей машины, поэтому таблица показывает каждый запуск в поясе вашего браузера — как если бы это была та машина — и рядом в UTC. Если сервер живёт в другом поясе, принцип тот же: читайте локальный столбец как часы той машины.

Во что разворачиваются @daily и другие сокращения?

@hourly — 0 * * * *, @daily и @midnight — 0 0 * * *, @weekly — 0 0 * * 0, @monthly — 0 0 1 * *, @yearly/@annually — 0 0 1 1 *. Это точные синонимы — инструмент разворачивает их, чтобы показать пять полей, за которыми они стоят.

Почему инструмент говорит, что расписание никогда не сработает?

Потому что названной даты не существует: 0 0 30 2 * вечно ждёт 30 февраля. Сканер смотрит достаточно далеко вперёд, чтобы найти любое реальное расписание — включая промежутки 29 февраля, — так что пустой результат это настоящий вердикт, а не рано сдавшийся поиск.

Поддерживаются ли шести- и семиполевые cron из Quartz или AWS?

Нет — это пятиполевой диалект Vixie/POSIX, используемый в Linux crontab, GitHub Actions и большинстве планировщиков. Quartz добавляет поле секунд и символы ? / L / W, у AWS EventBridge свой вариант; таким выражениям нужна их собственная документация. Если в вашем выражении шесть или семь полей — ошибка счёта полей и есть это различие.

Похожие инструменты