Crontab Guru
Вставьте cron-выражение и получите объяснение по каждому полю на простом английском: что именно оно делает. Не нужно запоминать порядок полей или искать диапазоны: Guru проходит по каждому из пяти полей (минута, час, день месяца, месяц и день недели) и читает выражение слева направо. Удобно, чтобы проверить строку crontab перед развёртыванием или объяснить доставшуюся строку.
Как пользоваться Guru
-
1
Вставьте выражение
Скопируйте любое стандартное cron-выражение из 5 полей (например, `0 9 * * 1-5`) в поле ввода.
-
2
Запросите объяснение
Нажмите Explain Cron, и инструмент вернёт построчное описание каждого поля: минута, час, день месяца, месяц и день недели.
-
3
Прочитайте описание
Объяснение формируется на английском, например "Minute: every 5 minutes" или "Hour: from 9 through 17."
-
4
Проверьте перед развёртыванием
Используйте объяснение, чтобы убедиться, что расписание делает то, что нужно, прежде чем переносить его в crontab, конфигурацию CI или манифест Kubernetes.
Памятка по полям
┌───────────── минута (0-59)
│ ┌─────────── час (0-23)
│ │ ┌───────── день месяца (1-31)
│ │ │ ┌─────── месяц (1-12 или JAN-DEC)
│ │ │ │ ┌───── день недели (0-6 или SUN-SAT; воскресенье = 0 или 7)
│ │ │ │ │
* * * * *
Операторы в cron-выражениях
| Оператор | Значение | Пример |
|---|---|---|
* |
Любое значение | * * * * * |
, |
Список значений | 0,15,30,45 |
- |
Диапазон | 9-17 |
/ |
Шаг (начало/шаг) | */5, 0-30/5 |
L |
Последний (последний день месяца или последний нужный день недели, Quartz) | L, 5L |
W |
Ближайший будний день | 15W (Quartz) |
# |
N-й нужный день недели в месяце | 1#3 (Quartz) |
? |
Без конкретного значения | Только Quartz |
Порядок чтения важен
0 */2 * * 1-5 читается слева направо так: минута 0, каждые 2 часа, любой день месяца, любой месяц, с понедельника по пятницу. По привычке люди иногда читают поля справа налево и путаются; всегда начинайте с минуты.
Ловушка «каждые X минут»
*/10 * * * * срабатывает в минуты 0, 10, 20, 30, 40, 50, а не «каждые 10 минут с момента создания задачи». Шаг в cron всегда отсчитывается от начала диапазона поля. Если вы развернёте задачу в 12:03, первый запуск будет в 12:10, а не в 12:13.
Для задач, которым действительно нужно «через N минут после последнего запуска», используйте планировщик с постоянным таймером (таймеры systemd с OnUnitActiveSec или планирование на уровне приложения с сохранённой меткой времени последнего запуска).
Ошибки cron, которые стоит знать
- Заданы и день месяца, и день недели: большинство реализаций cron трактует это как поведение ИЛИ, скорее всего, это не то, что вам нужно.
- Шаг 0:
*/0недопустим. - Диапазон, переходящий через полночь:
22-2для часов не работает в классическом cron; используйте22-23,0-2. - 30 февраля: расписание вида
0 0 30 2 *не сработает никогда. - Неоднозначность перехода на летнее время (DST): задачи, запланированные между 2:00 и 3:00, в дни перехода могут сработать дважды или не сработать вовсе.
cron против современных планировщиков
cron в Unix по-прежнему есть везде, но для чего-то критичного вам, скорее всего, понадобится одно из следующего:
- Таймеры systemd: подхватывают пропущенные запуски, поддерживают случайные смещения, читают настройки из unit-файлов.
- Kubernetes CronJob: декларативный, с повторами, с поддержкой часовых поясов в версии 1.25 и выше.
- Airflow / Prefect / Dagster: для задач с зависимостями, повторами, бэкфиллами и наблюдаемостью.
- Расписание GitHub Actions: cron из 5 полей, только UTC, минимальный интервал 5 минут, доставка по принципу best-effort.
Сам по себе cron, отличный формат, но плохой планировщик для задач, которые нельзя пропустить.
Часто задаваемые вопросы
Потому что в стандартном cron день недели 0, это воскресенье (7 тоже воскресенье, так поддерживаются обе конвенции). Понедельник, это 1. Quartz нумерует дни недели от 1 до 7, где воскресенье = 1, и это часто сбивает с толку тех, кто переходит между разными реализациями.
Классический Unix-cron работает в локальном часовом поясе сервера, том, что указан в /etc/timezone. Kubernetes CronJob, GitHub Actions и большинство облачных планировщиков по умолчанию работают в UTC. Всегда проверяйте это и по возможности используйте UTC, чтобы избежать сюрпризов с летним временем.
Классический cron не может выразить это напрямую. Обходной путь: запускайте задачу каждый понедельник и проверяйте дату внутри скрипта: [ $(date +%d) -le 7 ] && ./job.sh. Quartz поддерживает это нативно через 1#1.
Нет. Каждому расписанию нужна своя строка. Но несколько расписаний можно объединить в одну строку списками: 0 9,17 * * * запускается в 9:00 и в 17:00. Для расписаний, которые нельзя выразить одной строкой, добавьте несколько строк, указывающих на одну и ту же команду.
Сопутствующие инструменты
Справочная таблица 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. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.