tigtools

Расшифровка cron-выражения

Введите расписание cron из 5 полей, чтобы узнать, что оно означает и когда произойдёт следующий запуск. Все расчёты выполняются в браузере.

Работает в браузере Без регистрации

Пять полей: минута, час, день месяца, месяц, день недели. Также поддерживаются сокращения, например @daily.

Популярные расписания

Описание

Каждые 15 мин., с 09:00 до 17:59, в с понедельник по пятница.

Поля

Минута
*/15
Час
9-17
День месяца
*
Месяц
*
День недели
1-5
Часовой пояс

Следующие запуски: 10

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

    1. Введите или вставьте cron-выражение либо выберите одно из распространённых расписаний.
    2. Прочитайте объяснение простыми словами. Если поле указано неверно, вы увидите его название и причину ошибки.
    3. Проверьте время следующих 10 запусков в вашем часовом поясе. Если сервер работает в UTC, переключитесь на этот режим.
    4. Скопируйте время запусков, чтобы поделиться им, или измените выражение, чтобы настроить нужное расписание.

    Как это работает

    Стандартное cron-выражение, используемое в crontab в Linux (Vixie cron и cronie), а также во многих планировщиках CI и хостингов, состоит из пяти полей, разделённых пробелами: минуты (0–59), часы (0–23), день месяца (1–31), месяц (1–12 или JAN–DEC) и день недели (0–7 или SUN–SAT, где и 0, и 7 означают воскресенье). В каждом поле можно указать * для любого значения, отдельное значение, диапазон, например 1-5, список, например 1,15,30, или шаг, например */15 (каждое 15-е значение) или 9-17/2 (каждый второй час с 9 до 17). Названия не чувствительны к регистру. Сокращения @yearly (или @annually), @monthly, @weekly, @daily (или @midnight) и @hourly соответствуют выражениям 0 0 1 1 *, 0 0 1 * *, 0 0 * * 0, 0 0 * * * и 0 * * * *.

    Поля дня месяца и дня недели работают по правилу, которое часто удивляет пользователей. Если хотя бы одно из полей начинается с *, день должен соответствовать обоим полям. Если оба поля ограничены, запуск происходит в день, который соответствует хотя бы одному из них: выражение 0 0 13 * 5 срабатывает 13-го числа каждого месяца и каждую пятницу, а не только в пятницу, 13-го. Поскольку проверяется, начинается ли поле с *, шаг, например */2, тоже считается неограниченным значением. Так работают Vixie cron и cronie; некоторые другие планировщики ведут себя иначе.

    Время следующих запусков рассчитывается в часовом поясе вашего браузера или в UTC — именно его используют многие серверы и облачные планировщики. Сам cron использует часовой пояс машины, на которой он запущен. При переходе на летнее и зимнее время реальные демоны cron могут вести себя по-разному: этот инструмент не показывает местное время, которого не существует при переводе часов вперёд, и отображает повторяющийся час один раз. Расширенный синтаксис не поддерживается: выражения Quartz из шести или семи полей с секундами или годами, а также специальные символы ?, L, W и #.

    Примеры

    Проверка работоспособности в рабочее время

    */15 9-17 * * 1-5 означает запуск каждые 15 минут с 09:00 до 17:59 с понедельника по пятницу. Последний запуск каждого дня — в 17:45.

    Ночное резервное копирование

    30 2 * * * запускается каждый день в 02:30. Если сервер использует UTC, а вы находитесь в Нью-Йорке, список следующих запусков в режиме UTC покажет время по часовому поясу сервера.

    Ловушка полей дня

    0 9 1 * 1 может показаться расписанием «в 9:00 первого числа месяца, если это понедельник», но оно запускается в 09:00 первого числа каждого месяца, а также каждый понедельник. Чтобы запускаться только в первый понедельник, задайте 0 9 1-7 * * и проверяйте день недели в скрипте.

    Часто задаваемые вопросы

    Что означает */5 в cron?

    Это означает каждое пятое значение поля, начиная с наименьшего. В поле минут */5 запускается в 0, 5, 10 … 55 минут. В поле часов */5 запускается в 0, 5, 10, 15 и 20 часов, поэтому промежуток с 20:00 до полуночи составляет четыре, а не пять часов.

    Почему задача запускается чаще, чем я ожидал?

    Если поля дня месяца и дня недели ограничены, cron запускается в дни, соответствующие любому из них. Например, 0 0 15 * 1 запускается 15-го числа и каждый понедельник. Чтобы учитывать только одно поле, укажите * в другом.

    Какой часовой пояс использует cron?

    Cron использует системный часовой пояс сервера, на котором запущен демон, если в crontab не задан CRON_TZ или TZ (поддерживается cronie). Облачные планировщики часто используют UTC по умолчанию. Включите режим UTC, чтобы увидеть время запусков на сервере с часовым поясом UTC.

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

    В стандартном cron — нет: его точность составляет одну минуту, и он использует пять полей. Форматы из шести и семи полей с секундами и годами относятся к Quartz, Spring и похожим библиотекам и этим инструментом не поддерживаются.

    Воскресенье — это 0 или 7?

    Оба значения. В поле дня недели и 0, и 7 означают воскресенье, 1 — понедельник, а 6 — субботу. Также можно использовать трёхбуквенные названия дней от SUN до SAT.

    Конфиденциальность

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