Конструктор 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 минут записать нельзя: поля независимы, поэтому интервал, который длиннее часа и не кратен ему, приходится разбивать на несколько строк расписания.
Проверяйте результат по списку запусков, а не по выражению: прочитать пять дат надёжнее, чем вычитывать звёздочки.