Расшифровка cron-выражений онлайн — описание и ближайшие запуски
Расшифровка cron-выражений из 5/6 полей, 5 ближайших запусков и часовые пояса
Работает в браузере · файлы никуда не загружаются
Форма из 5 полей: минута, час, день, месяц, день недели · Форма из 6 полей: секунда, минута, час, день, месяц, день недели
Каждые 5 минут
Простыми словами
Каждые 5 минут
Ближайшие запуски: 5
Что это за инструмент
Короткое cron-выражение вроде */5 * * * * непонятно даже тому, кто сам написал его несколько месяцев назад. Введите его здесь, и оно будет расшифровано одним предложением, а пять ближайших реальных запусков будут рассчитаны для выбранного часового пояса. Описание формирует библиотека с открытым кодом cronstrue.
Как пользоваться
- Введите cron-выражение или нажмите кнопку с примером. Работают и форма из 5 полей, и форма из 6 полей с секундами.
- Прочитайте расшифровку в блоке «Простыми словами».
- Выберите часовой пояс — 5 ближайших запусков пересчитаются для него. По умолчанию используется пояс браузера.
- Если вы используете алиас вроде
@daily, рядом показывается стандартное выражение, которое он означает.
Как это работает
- Порядок полей: пять полей — минута (0-59), час (0-23), день (1-31), месяц (1-12), день недели (0-7); в шести полях спереди добавляются секунды (0-59). День недели 0 и 7 — это воскресенье, 1 — понедельник (Unix cron и Spring), в отличие от Quartz, где 1 — воскресенье.
- В поле можно использовать
*, число, диапазонa-b, списокa,bи шаги*/n,a-b/nилиa/n. Месяц и день недели принимают также английские сокращения вродеJANиMON. В дне месяца и дне недели?трактуется как*. - Алиасы:
@yearly(0 0 1 1 *),@monthly(0 0 1 * *),@weekly(0 0 * * 0),@daily(0 0 * * *) и@hourly(0 * * * *). - Если ни день месяца, ни день недели не равны
*, запуск происходит при совпадении любого из них. - Ближайшие запуски ищутся по часам выбранного пояса поле за полем, не дальше чем на 8 лет вперед. Для даты, которая никогда не наступит, например 30 февраля, выводится сообщение.
- Для некорректного выражения указывается, в каком поле и какое значение вызывает проблему.
Примеры
| Выражение | Значение |
|---|---|
*/5 * * * * |
Каждые 5 минут |
0 9 * * 1-5 |
В 09:00 по будням |
0 0 9 * * 1-5 |
Шесть полей: в 09:00:00 по будням |
30 2 1 * * |
В 02:30 первого числа каждого месяца |
Полезно знать
- Если сервер работает в другом поясе, чем ваш браузер, реальное время запусков тоже будет другим, поэтому при проверке выбирайте пояс сервера.
- Для частых выражений вроде «каждую минуту» или «каждую секунду» пять ближайших запусков просто идут подряд.
Частые вопросы
Чем отличаются 5 и 6 полей?
Пять полей — это минута, час, день, месяц, день недели; в шести полях первыми идут секунды: секунда, минута, час, день, месяц, день недели. Linux crontab использует пять полей, а @Scheduled в Spring — шесть. Инструмент различает их по количеству полей. Дни недели нумеруются как в Unix cron и Spring: 0 и 7 — воскресенье, 1 — понедельник. В Quartz 1 — воскресенье, 7 — суббота, поэтому для выражения из 6 полей с ? и числовым днем недели выводится предупреждение.
Понимает ли инструмент выражения Quartz?
Выражение из 6 полей с днями недели, записанными именами вроде MON или FRI, читается как есть. Числовые дни недели нумеруются иначе (в Quartz 1 — воскресенье, здесь 0 и 7 — воскресенье, 1 — понедельник), поэтому они сдвинутся на один день: используйте имена или вычтите 1. Если выражение для Spring, который тоже принимает ?, предупреждение можно не учитывать. Форма из 7 полей с годом в конце и обозначения L, W и # не поддерживаются.
Что если заданы и день месяца, и день недели?
Действуют классические правила cron — запуск происходит, если совпадает хотя бы одно из двух. Например, 0 0 13 * 5 означает полночь 13-го числа каждого месяца или любой пятницы. Если одно из полей — *, условием служит только другое.
Как учитывается переход на летнее время?
Время считается по местным часам выбранного пояса. Время, пропущенное при весеннем переводе часов, в этот день не срабатывает, а время, которое встречается дважды, срабатывает один раз — при первом появлении. Реальные планировщики могут вести себя иначе в зависимости от реализации.
Поддерживаются ли расширения L, W и #?
Нет. Понимаются числа, диапазоны (-), списки (,), шаги (/), * и ?, сокращения месяцев и дней недели (JAN, MON) и алиасы @hourly, @daily, @weekly, @monthly и @yearly. Все остальное выдается как ошибка.