Конструктор выражений Unix Cron

Визуальный генератор выражений Cron для настройки запланированных задач. Поддерживает настройку единиц времени — минуты, часы, дни, месяцы, недели, — и автоматически формирует стандартные выражения Cron.

Конструктор выражений Cron

От Шаг
Каждый минута
От До

Сформированный результат

Введите существующее выражение Cron, чтобы автоматически задать соответствующие параметры формы

Ближайшее время выполнения

Понимание выражений Cron

Формат выражения Cron


I. Базовая структура выражений Cron (со ссылками на авторитетные источники)

Стандартное выражение cron состоит из 5 полей времени и 1 поля команды в соответствии с соглашениями Unix и Linux. Согласно IEEE Std 1003.1-2017 (стандарт POSIX)[1] и документации Linux man 5 crontab[2], формат таков:

* * * * * command-to-execute
│ │ │ │ │
│ │ │ │ └── День недели (0-7, и 0, и 7 обозначают воскресенье)
│ │ │ └──── Месяц (1-12)
│ │ └────── День месяца (1-31)
│ └──────── Час (0-23)
└────────── Минута (0-59)

Примечания из авторитетных источников:

  1. Стандарт POSIX[1] определяет минимальную спецификацию совместимости, требуя поддержки символов *, , и -.
  2. Реализации Linux-демона cron (например, Cronie) расширяют функциональность значениями шага (/) и специальными строками (@daily и др.), подробнее в официальной документации[3].

II. Правила символов в полях времени

Каждое поле времени поддерживает следующие специальные символы:

Символ Описание Пример
* Соответствует любому значению * в минутах = каждую минуту
, Задаёт несколько значений 1,3,5 = минуты 1, 3 и 5
- Определяет диапазон 10-15 = минуты с 10 по 15
/ Значения шага (интервал) */5 в минутах = каждые 5 минут
? «Нет конкретного значения» (только для ДМ/ДН) Используется для предотвращения конфликтов

Современные реализации cron (например, Vixie cron и его производные) поддерживают более богатые синтаксические правила. Согласно документации IBM по Cron[4] и вики-проекту Cronie[3], широко поддерживаются следующие символы:

Символ Описание Пример из официальной документации
L Последний день (поддерживается некоторыми реализациями) 0 0 L * * = выполнять в последний день каждого месяца[5]
W Ближайший рабочий день (например, 15W = рабочий день, ближайший к 15-му) См. документацию Quartz Scheduler[6] (распространено в экосистеме Java)

III. Происхождение предопределённых псевдонимов (@daily и др.)

Псевдонимы @daily, @weekly и подобные происходят из реализации cron Пола Викси (Vixie cron, выпущена в 1987)[7] и теперь являются стандартными функциями в современных дистрибутивах Linux (например, Debian, Red Hat). Согласно руководству Debian по cron[8]:

# Эквивалентно 0 0 * * *
@daily /path/to/script

IV. Распространённые различия реализаций и нюансы

Разные реализации cron имеют тонкие отличия, для которых следует обращаться к соответствующей документации:

Реализация Возможности Ссылка на официальный ресурс
Cronie Cron по умолчанию в Red Hat, поддерживает сокращения @ Cronie на GitHub
systemd Заменяет cron юнитами .timer (рекомендуется для новых систем) Руководство по systemd.timer
fcron Поддерживает более сложный синтаксис (например, @yearly) Сайт fcron

V. Рекомендуемые инструменты проверки и авторитетные источники

  1. Страница руководства Crontab Выполните man 5 crontab в терминале для получения полного синтаксиса — самая прямая локальная авторитетная справка.

  2. Генераторы выражений Cron

  3. Документация открытых проектов


VI. Резюме

Сочетая стандарт POSIX, страницы руководства Linux и документацию основных реализаций (например, Cronie), пользователи могут точно понять основную логику выражений cron. Для расширенного использования (например, L и W) учитывайте совместимость реализаций и отдавайте приоритет официальным источникам.


Ссылки

[1] Стандарт POSIX: Определение Cron
[2] Руководство Linux man 5 crontab
[3] Официальная документация Cronie: GitHub Wiki
[4] Справка IBM по Cron: Описание формата Cron
[5] Синтаксис Quartz Cron: Документация Quartz Scheduler
[6] История Vixie cron: Вики Vixie cron
[7] Руководство Debian по cron: Debian CronHowto
[8] Руководство systemd.timer: Официальная документация systemd
[9] Руководство Ubuntu по Cron: Сообщество Ubuntu по Cron

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

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

Выражение Cron — это строка из 5 или 7 полей, разделённых пробелами, которая описывает расписание в операционных системах Unix-подобного типа. Она позволяет запускать задачи (например, резервное копирование или скрипты) автоматически в определённое время или через заданные интервалы.

В чём разница между стандартным и расширенным режимами?

Стандартный режим использует 5 полей (минута, час, день месяца, месяц, день недели) и является стандартным форматом заданий cron в Linux/Unix. Расширенный режим использует 7 полей, добавляя в начало секунды, а в конец — год. Его часто применяют современные планировщики приложений, такие как Quartz (Java) или Spring.

Что означает символ «?» в Cron?

Символ «?» означает «нет конкретного значения». Он используется только в полях «день месяца» и «день недели». Он полезен, когда нужно задать что-то в одном из этих двух полей, но не важно значение другого. Например, если вы хотите запускать задачу 10-го числа каждого месяца независимо от дня недели, укажите «10» в поле дня месяца и «?» в поле дня недели.

Можно ли получить выражение Cron из существующего?

Да! Вы можете использовать функцию «Обратный разбор». Просто вставьте своё существующее выражение Cron в поле ввода и нажмите «Разобрать выражение». Визуальный конструктор автоматически обновится в соответствии с настройками вашего выражения.