Код

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

Конструктор cron-выражений
* * * * *
Частые расписания

Готовое выражение можно вставить целиком в любое из пяти полей — оно разложится по ним само. Всё считается в вашем браузере.

Об инструменте: конструктор и расшифровщик cron-выражений

Cron управляет расписаниями на каждом сервере, но его синтаксис не держит в голове никто. Пять звёздочек ничего не объясняют, а ошибка в одном символе означает, что задание выполнится не тогда, когда нужно, и заметите вы это нескоро. Этот инструмент работает в обе стороны: собирает выражение из полей и сразу переводит его человеческим языком. Здесь нет сторонней рекламы и регистрации.

Всё считается в вашем браузере — выражение не отправляется на сервер и нигде не сохраняется.

Главные преимущества инструмента:

  • Объяснение живым языком: под выражением сразу видно, что именно оно означает. Не «0 9 * * 1-5», а «в 09:00, с понедельника по пятницу».

  • Ближайшие запуски: пять конкретных дат с днями недели. Это самый надёжный способ убедиться, что расписание именно то, которое вы задумали.

  • Разбор готового выражения: вставьте целую строку вроде */15 * * * * в любое из пяти полей — оно разложится по ним само.

Как устроено cron-выражение

Выражение состоит из пяти полей, разделённых пробелами. Каждое отвечает за свою единицу времени:

  • Минута — от 0 до 59.

  • Час — от 0 до 23, то есть время считается в 24-часовом формате.

  • День месяца — от 1 до 31.

  • Месяц — от 1 до 12. Можно писать и сокращениями: JAN, FEB и далее.

  • День недели — от 0 до 6, где 0 это воскресенье. Значение 7 тоже означает воскресенье, а вместо цифр принимаются MON, TUE и остальные.

Что можно писать в поле

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

  • Число 5 — ровно это значение.

  • Диапазон 1-5 — все значения от первого до последнего включительно.

  • Перечисление 1,15,30 — только перечисленные значения.

  • Шаг */10 — каждое десятое значение. Шаг можно совместить с диапазоном: 0-30/10 даст 0, 10, 20 и 30.

Ловушка, на которой спотыкаются все

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

Выражение 0 0 13 * 5 запустится не «в пятницу 13 числа», как кажется, а и 13 числа каждого месяца, и по пятницам. Это не ошибка реализации, а поведение, заложенное в стандарт. Инструмент предупреждает о нём каждый раз, когда вы ограничиваете оба поля, а список ближайших запусков показывает следствие наглядно.

Несколько практических советов

  • Не ставьте тяжёлые задания ровно на начало часа: в 00:00 и 03:00 нагрузка на серверы традиционно самая большая. Сдвиг на несколько минут, скажем 7 3 * * *, разводит пики.

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

  • Каждые 90 минут записать нельзя: поля независимы, поэтому интервал, который длиннее часа и не кратен ему, приходится разбивать на несколько строк расписания.

  • Проверяйте результат по списку запусков, а не по выражению: прочитать пять дат надёжнее, чем вычитывать звёздочки.