Парсер cron-выражений

Формат: минуты час день месяца месяц день недели

Вам достаётся crontab, набитый строками вида 0 */2 * * 1-5, 15 4 1 * *, */30 8-18 * * *. Этот парсер принимает стандартное cron-выражение из 5 полей и возвращает понятное описание на простом английском (например, “every 2 hours on weekdays”), а также следующие 5 моментов, когда задача действительно запустится. Удобно, чтобы разобраться в старых расписаниях и проверить новое перед развёртыванием.

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

  1. 1

    Вставьте выражение

    Стандартное выражение из 5 полей (`* * * * *`): минута, час, день месяца, месяц и день недели.

  2. 2

    Прочитайте описание на английском

    Парсер переписывает каждое поле простым английским, например "At minute 0, every 2 hours, on day(s) of week 1-5."

  3. 3

    Проверьте предпросмотр ближайших запусков

    5 ближайших моментов срабатывания. Если они не совпадают с замыслом, уточните выражение.

  4. 4

    Исправьте недопустимые поля

    Выражения с неверным числом полей или значениями вне диапазона отклоняются с сообщением, которое называет проблемное поле.

Расшифровка каждого поля

У каждого поля свой допустимый диапазон и специальные символы:

Поле Диапазон Поддерживаемые подстановочные знаки
Минута 0-59 * , - /
Час 0-23 * , - /
День месяца 1-31 * , - /
Месяц 1-12 * , - /
День недели 0-7 * , - /
  • * = любое значение (* в поле минут означает каждую минуту).
  • 1,5,10 = список значений.
  • 1-5 = диапазон значений.
  • */15 или 0-45/15 = шаг, отсчитываемый от начала диапазона поля.
  • Дни недели 0 и 7 оба означают воскресенье, поэтому принимаются обе конвенции. Названия месяцев и дней недели, такие как JAN или MON, не принимаются; используйте числа.

Примеры с расшифровкой

Выражение По-английски
0 */2 * * 1-5 At minute 0 every 2 hours, Monday through Friday
15 4 1 * * At 04:15 on the 1st day of every month
*/30 8-18 * * * Every 30 minutes between 08:00 and 18:59
0 0 1,15 * * At midnight on the 1st and 15th of every month
0 22 * * 0 At 22:00 every Sunday

Что принимает парсер

  • Ровно 5 полей: минута, час, день месяца, месяц и день недели. Выражения Quartz из 6 или 7 полей (с секундами или годом) отклоняются.
  • Допустимые диапазоны: каждое значение должно помещаться в своё поле, например минута 0-59, час 0-23, день месяца 1-31, месяц 1-12 и день недели 0-7.
  • Положительные шаги: значение после / должно быть положительным числом (*/0 отклоняется).
  • Без именованных сокращений: @daily, @reboot и подобные сокращения не принимаются. Сначала разверните их в форму из 5 полей (например, @daily = 0 0 * * *).

День месяца и день недели вместе

Когда заданы и день месяца, и день недели, этот парсер планирует запуск только при совпадении обоих: 0 0 1 * MON срабатывает только тогда, когда 1-е число приходится на понедельник. Большинство реализаций cron в Linux трактуют эти два поля как ИЛИ (задача запускается при совпадении любого из них). Поэтому сверьте выражение с планировщиком, которым вы действительно пользуетесь.

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

Времена в предпросмотре вычисляются по часам сервера, который работает в UTC. Если ваш crontab работает на машине с другим часовым поясом, показанные здесь времена могут отличаться от времён на той машине.

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

Нет. Принимаются только стандартные выражения из 5 полей. Выражения Quartz с секундами (6 полей) или с годом (7 полей) отклоняются с ошибкой.

Обычно по одной из этих причин: предпросмотр использует часы сервера в UTC, а ваш crontab работает в другом часовом поясе; заданы и день месяца, и день недели (этот парсер требует совпадения обоих); или шаг, который начинается заново в начале каждого часа или дня.

Да, если это стандартное выражение из 5 полей, которое и использует Kubernetes (по умолчанию UTC). Учтите, что предпросмотр здесь использует часы сервера в UTC: если кластер работает в другом часовом поясе, времена могут отличаться.

Linux cron поддерживает именованные сокращения: @reboot (при запуске), @yearly / @annually (0 0 1 1 *), @monthly, @weekly, @daily, @hourly. Этот парсер их не принимает, поэтому сначала разверните сокращение в эквивалентное выражение из 5 полей и лишь затем вставляйте его сюда.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор цветовой палитры

Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.