Конструктор и расшифровщик cron-выражений онлайн

Пять полей crontab, чипы вместо звёздочек и запятых, понятная ошибка вместо «bad minute» и честный расчёт ближайших запусков с учётом часового пояса.

работает в браузере · данные никуда не отправляются

Конструктор минута · час · день месяца · месяц · день недели
Минуты 0–59
Часы 0–23
День месяца 1–31
Месяц 1–12 или JAN–DEC
День недели 0–7 или SUN–SAT, 0 и 7 — воскресенье
Следующие запуски
#дата и времяденьчерез
Введите выражение — здесь появятся ближайшие 10 запусков

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

  1. В конструкторе слева для каждого поля (минуты, часы, день месяца, месяц, день недели) выберите режим: каждый, конкретные значения чипами, диапазон или каждые N.
  2. Выражение соберётся справа само; его можно править руками — конструктор подстроится, а ошибка подсветится с указанием поля и допустимого диапазона.
  3. Прочитайте расшифровку по-русски и проверьте список из 10 ближайших запусков — переключите зону на Europe/Moscow или UTC, если сервер живёт не в вашем поясе.
  4. Готовые пресеты (каждые 5 минут, будни в 09:00, воскресенье 04:30) подставляются одним нажатием; результат — Копировать в crontab.

Формат crontab: пять полей

Классическое cron-выражение состоит из пяти полей через пробел: минута час день-месяца месяц день-недели. В каждом поле допустимы * (любое значение), список через запятую 1,15, диапазон 9-18, шаг */5 или 0-30/10, а для месяцев и дней недели — трёхбуквенные имена JANDEC и SUNSAT. Воскресенье записывается как 0 или 7. Инструмент понимает и сокращения @hourly, @daily, @weekly, @monthly, @yearly, @reboot.

Тонкость, о которую спотыкаются чаще всего: если заданы и день месяца, и день недели (оба не *), задание сработает, когда совпадёт любое из условий, а не оба сразу. 0 9 1 * 1 — это «в 09:00 первого числа и по всем понедельникам», а не «в первый понедельник месяца». Расшифровка показывает это явно.

Как считаются следующие запуски

Ближайшие 10 запусков вычисляются честно — перебором минут от текущего момента с проверкой каждого поля, а не по формуле. Дата и время показываются в выбранной зоне: локальной зоне браузера, Europe/Moscow или UTC. Это важно, потому что crontab исполняется в зоне сервера: задание «в 03:00» на машине в UTC у московского пользователя сработает в 06:00. Поиск ограничен пятью годами вперёд — если за это время совпадений нет (например, 0 0 31 2 *), инструмент так и скажет.

Где ещё пригодится

  • Laravel: $schedule->command('stats:pull')->cron('*/15 * * * *') — те же пять полей, зона задаётся через ->timezone().
  • GitHub Actions: on: schedule: - cron: '0 3 * * 1-5' — пять полей, всегда UTC, минимальный интервал 5 минут.
  • Kubernetes CronJob, systemd timers (через OnCalendar, но синтаксис другой), панели хостингов и трекеры с планировщиком постбэков.
  • Внимание: Quartz (Java), Spring и часть облачных планировщиков используют шесть или семь полей — первое из них секунды. Такое выражение сюда не подойдёт: уберите поле секунд или добавьте его при переносе.

Частые расписания

ВыражениеСмысл
*/5 * * * *каждые 5 минут — опрос API партнёрки, синк статистики
0 * * * *каждый час ровно — агрегация кликов
0 3 * * *ежедневно в 03:00 — бэкапы, очистка логов
0 9 * * 1-5по будням в 09:00 — утренний отчёт в Telegram
30 4 * * 0воскресенье 04:30 — тяжёлые пересчёты за неделю
0 0 1 * *первого числа в полночь — закрытие месяца, инвойсы

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

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

*/5 * * * *. Косая черта задаёт шаг: «каждая пятая минута начиная с нулевой». Аналогично каждые 2 часа — 0 */2 * * *, каждые 30 минут — */30 * * * *.

Как сделать cron по будням в 9 утра?

0 9 * * 1-5: минута 0, час 9, любой день месяца, любой месяц, дни недели с понедельника (1) по пятницу (5). Имена тоже допустимы: 0 9 * * MON-FRI.

Что означает звёздочка в cron-выражении?

Любое допустимое значение поля. * * * * * — каждую минуту. Звёздочка в поле дня недели вместе с конкретным днём месяца означает «день недели не ограничен».

Почему cron не запустился в указанное время?

Чаще всего дело в часовом поясе сервера (проверьте date и TZ), в шести полях вместо пяти или в том, что день месяца и день недели заданы одновременно и работают через ИЛИ. Список следующих запусков в нужной зоне помогает увидеть расхождение.

Можно ли задать cron на 30 секунд?

В стандартном crontab минимальный шаг — одна минута. Секунды есть только в 6-полевых форматах (Quartz, некоторые библиотеки), либо задание запускают дважды: * * * * * cmd и * * * * * sleep 30; cmd.

Считаются ли следующие запуски с учётом летнего времени?

Да, для локальной зоны и любых зон с переходами используются данные браузера (IANA tzdata). В Europe/Moscow и UTC переходов нет — там время просто плюс три часа и ноль соответственно.

свежие базы — в канале Подписаться на канал