Генератор и объяснение cron-выражений

Составьте расписание crontab без запоминания синтаксиса или вставьте существующее выражение, чтобы увидеть его описание простым языком и точное время следующего запуска.

Обновлено

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

Типовые расписания

Создать расписание

По

Время следующих запусков

    Редактировать поля

    0–59
    0–23
    1–31, L
    1–12, JAN–DEC
    0–6, SUN–SAT

    Синтаксис: * любое · 5 значение · 1-5 диапазон · 1,15 список · */10 шаг · 8-18/2 диапазон с шагом · макросы @hourly @daily @weekly @monthly @yearly.

    Ваши данные никогда не покидают ваш компьютер. Вся обработка выполняется на 100% локально в вашем браузере.

    Был ли этот инструмент полезен?0.0 Оценок: 0
    Создайте systemd .service-файл для NodePython, Go или любого приложения: политика перезапуска, пользователь, окружение, песочница и опциональный .timer.Генератор systemd service →

    Как пользоваться: Генератор cron-выражений

    1. Выберите типовое расписание или используйте Создать расписание, чтобы указать периодичность, дни недели и время, затем нажмите Использовать это расписание.
    2. Или вставьте готовое выражение, например 30 2 * * 1, в поле Cron-выражение. Описание простыми словами обновляется по мере ввода.
    3. Точно настройте отдельные части в блоке Редактировать поля (минута, час, день месяца, месяц, день недели).
    4. Проверьте список Время следующих запусков в местном времени или UTC, затем скопируйте выражение в crontab, CI-workflow или планировщик.

    Что такое cron-выражение?

    Cron-выражение — это компактное расписание из пяти полей, разделённых пробелами. Оно сообщает демону Unix cron и инструментам на том же синтаксисе, например GitHub Actions, GitLab CI, Kubernetes CronJobs, Vercel и многим очередям задач, когда запускать задачу. Этот генератор позволяет собрать выражение из выпадающих списков, объясняет любое выражение простым языком с помощью открытой библиотеки cRonstrue и вычисляет ближайшие запуски, чтобы вы могли проверить расписание до его запуска в работу.

    Пять полей

    ┌──────── minute (0–59)
    │ ┌────── hour (0–23)
    │ │ ┌──── day of month (1–31)
    │ │ │ ┌── month (1–12, JAN–DEC)
    │ │ │ │ ┌ day of week (0–6, SUN–SAT)
    │ │ │ │ │
    * * * * *  command

    В поле дня недели 7 тоже означает воскресенье.

    Каждое поле принимает * (любое значение), одно число, диапазон 1-5, список 1,15,30, шаг */10 или диапазон с шагом 9-17/2. Некоторые планировщики (Quartz, Spring, AWS EventBridge) добавляют первое поле — секунды. Отметьте «Поле секунд», чтобы работать с 6-частными выражениями.

    Примеры

    ВыражениеЗначение
    */5 * * * *Каждые 5 минут
    0 * * * *В начале каждого часа
    30 2 * * *Каждый день в 02:30
    0 9 * * 1-5В 09:00 по будням
    0 0 1 * *В полночь 1-го числа каждого месяца
    0 0 1 */3 *В полночь первого дня каждого квартала
    15 14 1 * *В 14:15 1-го числа каждого месяца

    Частые ошибки

    • День месяца и день недели. Если ограничены оба поля, классический cron запускает задачу, когда совпадает любое из них. 0 0 13 * 5 означает «каждое 13-е число и каждую пятницу», а не «пятницу 13-го». Список следующих запусков следует этому правилу.
    • Забытая минута. * 9 * * * запускается 60 раз с 09:00 до 09:59. Используйте 0 9 * * *, чтобы задача запускалась один раз.
    • Часовые пояса. Cron использует часовой пояс сервера, а GitHub Actions и большинство облачных планировщиков работают в UTC. Переключите список запусков на UTC для сравнения.
    • Неравномерные шаги. */45 в поле минут срабатывает в :00 и :45, затем снова в :00. Шаги начинаются заново каждый час и не переносятся.
    • Номера дней в Quartz. Quartz считает воскресенье единицей, а Unix cron использует 0 (или 7). Этот инструмент использует нумерацию Unix.

    Нестандартные расширения

    L в поле дня месяца (последний день месяца), 5L (последняя пятница) и 1#2 (второй понедельник) поддерживаются Quartz и некоторыми реализациями cron, но не Vixie cron в Linux. Здесь они объясняются и показываются в предпросмотре, но проверьте, принимает ли их ваш планировщик. Нужно перевести время запуска в epoch-значение? Попробуйте Конвертер Unix-времени или Конвертер часовых поясов.

    Также ищут как: crontab, cron job.

    Инструменты, которые хорошо сочетаются с Генератор cron-выражений

    • Генератор systemd service — Запускайте приложение как полноценный сервис Linux, который стартует при загрузке и перезапускается после сбоя.
    • Калькулятор разницы дат — Считайте дни между двумя датами, включая рабочие дни и разбивку на годы, месяцы и дни.
    • Тестер регулярных выражений — Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.
    • HTML форматер — Вставьте минифицированную или неаккуратную разметку и получите чистый HTML с единообразными отступами, включая встроенные блоки <style> и <script>.

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

    Что означает */15 в cron?
    Косая черта задаёт шаг: */15 в поле минут означает каждую 15-ю минуту, начиная с 0, то есть :00, :15, :30 и :45. Выражение 5-50/15 даст :05, :20, :35 и :50.
    Как запускать cron-задачу каждые 30 секунд?
    Стандартный cron из пяти полей не может работать чаще одной минуты. Используйте планировщик с шестью полями, который поддерживает секунды (*/30 * * * * *), или добавьте в crontab две строки, где вторая начинается с sleep 30;.
    Время cron в UTC или в местном часовом поясе?
    Классический cron использует системный часовой пояс сервера (некоторые версии учитывают переменную CRON_TZ). GitHub Actions, Kubernetes (по умолчанию) и большинство облачных планировщиков вычисляют выражения в UTC. Список запусков здесь может показывать любой из вариантов.
    В чём разница между @daily и 0 0 * * *?
    Никакой. @daily (или @midnight) — это сокращение для 0 0 * * *. Аналогично @hourly = 0 * * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * * и @yearly = 0 0 1 1 *.
    Как запланировать задачу на последний день месяца?
    В классическом Unix cron нет значения «последний день». Либо используйте L, если ваш планировщик его поддерживает (0 0 L * *), либо запускайте задачу ежедневно с 28 по 31 число и проверяйте дату в самой команде: 0 0 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && ./job.sh.
    Почему моё выражение никогда не запускается?
    Несуществующие даты, например 0 0 31 2 * (31 февраля) или 0 0 31 4 * (31 апреля), никогда не совпадают. Список следующих запусков покажет предупреждение, если в ближайшие десять лет запуск не найден.
    Можно ли установить Генератор cron-выражений как веб-приложение и пользоваться им офлайн?
    Да. Генератор cron-выражений — это веб-приложение (PWA), которое можно установить из браузера, без скачивания из магазина приложений. В Chrome или Edge (Windows, macOS, Linux, ChromeOS) или на Android нажмите вверху этой страницы «Установить приложение»; на iPhone и iPad используйте «Поделиться → На экран «Домой»», а в Safari 17+ на Mac — «Файл → Добавить в Dock». После этого приложение откроется в отдельном окне со своим значком, и так как оно полностью работает в браузере, оно продолжит работать офлайн. Firefox на компьютере не умеет устанавливать веб-приложения. Как работает установка.

    Похожие инструменты

    localГенератор systemd serviceЗапускайте приложение как полноценный сервис Linux, который стартует при загрузке и перезапускается после…localКонвертер Unix timestampПосмотрите текущее Unix-время в реальном времени, переведите любой epoch-timestamp (секунды, миллисекунды,…localКонвертер часовых поясовПереводите время между городами и часовыми поясами и смотрите текущее время во всех них. Планируете…localКалькулятор разницы датСчитайте дни между двумя датами, включая рабочие дни и разбивку на годы, месяцы и дни. Прибавляйте или…localТестер регулярных выраженийВведите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте. Изучайте каждую группу…localHTML форматерВставьте минифицированную или неаккуратную разметку и получите чистый HTML с единообразными отступами,…