TanodTools
RU

Генератор cron-выражений

Составьте расписание crontab из простых вариантов, затем проверьте, что оно означает по-русски и когда сработает в следующий раз.

Работает полностью в браузере

Cron-выражение

* * * * *

Вставьте выражение из пяти полей или сокращение вроде @daily.

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

Оставьте пустым, чтобы начать с текущего момента.

    Уже есть выражение, и его нужно только расшифровать? Воспользуйтесь «Расшифровкой cron-выражений».

    Стандартный cron из пяти полей, как в Vixie cron и cronie: минута, час, день месяца, месяц и день недели. Quartz и другие форматы с полем секунд не создаются, а вставленные выражения, которые элементы управления показать не могут, сохраняются в том виде, в каком введены.

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

    1. Начните с готового варианта или задайте каждое поле: выполнять всегда, каждые N единиц от начала, в определённые значения либо между двумя значениями.
    2. Проверьте выражение, его описание простым языком и время ближайших запусков в часовом поясе вашего сервера.
    3. Скопируйте выражение в crontab, расписание CI или планировщик. Можно также вставить готовое выражение, чтобы загрузить его в элементы управления.

    Как составляется расписание cron

    Cron-выражение — это пять полей через пробел: минута, час, день месяца, месяц и день недели. Каждое поле отвечает на один вопрос о том, когда выполнять задание, и оно выполняется, когда совпадают все поля. Значение * в поле означает любое значение, поэтому 0 * * * * срабатывает в начале каждого часа, а 0 0 * * * — раз в сутки в полночь.

    Конструктор предлагает для каждого поля четыре способа сказать, что вам нужно. Шаг вроде */15 означает каждое 15-е значение, список вроде 1,15 выбирает точные значения, диапазон вроде 9-17 охватывает всё между двумя значениями, а * — каждое значение. Когда вы отмечаете значения, три и более идущих подряд записываются диапазоном, поэтому с понедельника по пятницу получается 1-5, а не 1,2,3,4,5.

    Две ловушки подстерегают большинство людей. Cron использует часы машины, на которой работает, поэтому задание на 09:00 выполняется в 09:00 по времени сервера, а оно может не совпадать с вашим; список ближайших запусков позволяет проверить это в нескольких поясах. Кроме того, когда ограничены и поле дня месяца, и поле дня недели, задание выполняется при совпадении любого из них, что может означать куда больше запусков, чем вы ожидали.

    Советы

    Вопросы и ответы

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

    Установите для поля «Минута» вариант Каждые 15 минут начиная с 0, что запишет */15 * * * *. Задание выполняется в минуты 0, 15, 30 и 45 каждого часа.

    Как записывается начало, отличное от 0?

    Начало, например минута 5 с шагом 10, записывается как 5-59/10, что даёт запуски в 5, 15, 25, 35, 45 и 55. Более короткое 5/10 работает в некоторых версиях cron, но другие его отвергают, так что переносимый вариант — длинная запись.

    Почему одни дни задаются диапазонами, а другие списками?

    Три и более идущих подряд значения записываются диапазоном: понедельник–пятница — это 1-5, а понедельник, среда и пятница — 1,3,5. Оба варианта означают ровно те значения, которые вы отметили.

    Что будет, если задать и день месяца, и день недели?

    Стандартный cron запускает задание, когда совпадает любое из полей, а не оба. 0 9 1 * 1 выполняется 1-го числа месяца и в каждый понедельник. Если ваш выбор попадает в этот случай, инструмент добавляет примечание.

    Какой часовой пояс используют ближайшие запуски?

    Тот, который вы выберете под выражением. Сам cron использует часовой пояс машины или контейнера, на котором работает, если только crontab не задаёт CRON_TZ. Многие серверы работают по UTC, поэтому проверьте это, прежде чем доверять времени.

    Поддерживаются ли секунды, @daily или синтаксис Quartz?

    Инструмент создаёт только выражения из пяти полей. Вставка @daily или другого сокращения работает и преобразуется в пять полей. Выражения из шести полей и в стиле Quartz отвергаются, потому что в них первое поле — секунды. Подробнее об этом сказано в «Расшифровке cron-выражений».