0 9 * * *Описание инструмента
О Генератор выражений cron
Генератор cron собирает стандартное выражение crontab из пяти полей на основе понятных вариантов выбора, чтобы поставить задачу по расписанию, не заучивая порядок полей.
Поддерживается классический формат, который используют cron в Linux, CronJob в Kubernetes и большинство планировщиков CI: минута, час, день месяца, месяц, день недели. Поля секунд здесь нет, поэтому выражения из 6 и 7 полей в стиле Quartz за рамками страницы.
Как пользоваться генератором Cron Expression Generator
- Начните с заготовки: каждые 5 минут, каждый час, ежедневно в полночь, по будням в 09:00 или ежемесячно 1-го числа. Заготовка заполняет поля ниже, и их можно дальше донастраивать.
- Правьте любое поле одним из пяти режимов: «каждый» для обычной звёздочки, «каждые N» для шага вида */15, «диапазон» для промежутка 9-17, «список» для значений 1,15,30 и «точно» для одного числа.
- Читайте выражение, которое обновляется вживую, и копируйте его в crontab, конфигурацию CI или манифест CronJob.
- Сверьте ближайшие 6 запусков, показанных ниже. Такой предпросмотр — самый быстрый способ заметить значение, попавшее не в то поле.
Когда это пригодится
- Поставить ночное резервное копирование базы данных так, чтобы оно завершалось до начала рабочего дня.
- Ротировать или архивировать журналы с фиксированной недельной или месячной периодичностью.
- Прогревать кеш или пересобирать поисковый индекс перед дневным пиком нагрузки.
- Отправлять отчёт каждый понедельник утром или в первый день месяца для биллинга.
- Запускать ночную сборку CI и регулярную проверку продления сертификата.
Правила синтаксиса cron, на которых чаще всего ошибаются
Пять полей идут в порядке: минута, час, день месяца, месяц, день недели. Большинство неверных расписаний рождается из нескольких особенностей семантики, которые легко прочитать неправильно.
- Когда и день месяца, и день недели заданы чем-то отличным от звёздочки, cron объединяет их через ИЛИ, а не через И. Так что 0 0 13 * FRI означает 13-е число каждого месяца или каждую пятницу, а вовсе не только пятницу 13-го.
- Шаг вида */15 начинается с 0 и повторяется каждые 15 единиц, давая 0, 15, 30, 45. Шаг, записанный как 5/15, начинается с 5 и идёт до максимума, давая 5, 20, 35, 50.
- В поле дня недели и 0, и 7 означают воскресенье, поэтому одно и то же расписание записывается двумя способами.
- Месяц и день недели принимают трёхбуквенные имена: от JAN до DEC и от MON до SUN.
- Cron работает в локальном часовом поясе машины, которая хранит расписание, поэтому уточните этот пояс перед развёртыванием. Переходы на летнее время могут пропустить или повторить часовой слот.
Частые вопросы: Генератор cron
- Поддерживает ли инструмент поле секунд?
- Нет. Он выдаёт только стандартный формат crontab из пяти полей. Quartz и некоторые планировщики на Java используют 6 или 7 полей с секундами и необязательным годом — такие выражения здесь не генерируются.
- Почему расписание с днём месяца и днём недели срабатывает чаще, чем я ожидал?
- Потому что cron трактует эти два поля как ИЛИ, когда ни одно из них не звёздочка. Для строгого условия И задайте более широкое расписание и добавьте проверку даты внутри самой задачи.
- Безопасно ли запускать задачу каждую минуту?
- Только если один прогон уверенно укладывается меньше чем в минуту. Иначе запуски начнут накладываться и копиться, так что добавьте файл блокировки или защиту от повторного запуска либо увеличьте интервал.
- В каком часовом поясе показаны ближайшие запуски?
- Предпросмотр использует часовой пояс вашего браузера. Машина, исполняющая расписание, живёт в своём, поэтому сверьте их, прежде чем полагаться на точный час.
- Загружается ли моё расписание куда-либо?
- Нет. Любое выражение на wetool.site собирается и просматривается целиком в вашем браузере, и ничего из введённого не отправляется на сервер.
Генератор cron против парсера cron
Парсер cron на этом сайте решает обратную задачу: у вас уже есть выражение, и вы хотите понять, что оно значит и когда сработает в следующий раз. Генератор идёт в другую сторону — превращает расписание, которое вы можете описать словами, в корректный синтаксис. Инструменты дополняют друг друга, поэтому после генерации выражение полезно вставить в парсер как независимую вторую проверку.
Что проверить перед развёртыванием расписания
Выражение, которое выглядит правильным, всё равно может сработать не в тот момент на реальном сервере. Короткая проверка отлавливает большую часть таких случаев.
- Сверьте ближайшие 6 запусков с задуманным, особенно первый: он сразу выдаёт ошибку на единицу в номере поля.
- Уточните часовой пояс исполняющей машины или контейнера, а для систем, охватывающих несколько регионов, предпочитайте UTC.
- Разнесите тяжёлые задачи по разным минутам, а не складывайте всё на нулевую минуту.
- Решите заранее, что должно происходить с пропущенным запуском, пока хост был выключен: стандартный cron не догоняет пропуски.