Инструменты разработчика · Генератор Crontab
Примеры выражений Cron: каждый час, каждую ночь, будние дни, первое число месяца.
· Как это работает
хрон примеры планирование
Десять графиков охватывают большинство реальных crontab. В этом посте дается выражение для каждого из них, объясняются поля и указывается то, в котором люди почти всегда ошибаются.
Вам нужно «первое число месяца в 06:00», а результаты поиска не совпадают — набор проверенных выражений с аргументацией
Скопированный ответ для «первого числа месяца в 06:00» полезен только в том случае, если каждая позиция может быть обоснована. В порядке пяти полей `0 6 1 * *` означает нулевую минуту, шестой час, день первого месяца, каждый месяц и каждый день недели. Чтение полей предотвращает превращение привлекательного примера в необъяснимую производственную зависимость.
Приведенные здесь примеры соответствуют грамматике, используемой синтаксическим анализатором и тестами ToolAcre. Это фрагменты расписания, а не полные определения заданий. Браузер может описать их и показать будущих кандидатов на настенные часы в выбранной зоне, но он не знает команду, разрешения или хост, который может в конечном итоге их использовать.
Каждую минуту, каждые 5 минут, каждый час — * * * * *, */5 * * * * и 0 * * * *, и почему ведущий 0 имеет значение
`* * * * *` выбирает минутное значение каждого часа и даты. `*/5 * * * *` сокращает количество минут до 0, 5, 10 и так далее до 55. `0 * * * *` выбирает только нулевую минуту, создавая одного кандидата в начале каждого часа. Таким образом, ведущий ноль представляет собой разницу между шестьюдесятиминутными позициями и одной.
Все три формы появляются либо в предустановленном, либо в проверенном синтаксисе. Шаг расширяется от нижней границы поля минут, а подстановочный знак расширяет все разрешенные значения от 0 до 59. Используйте предварительный просмотр, чтобы проверить запуски сразу после этого; не делайте вывод, что инструмент запустил повторяющийся процесс только потому, что он может подсчитывать время.
Ежедневно и дважды в день — 30 2 * * * и 0 6,18 * * *
Ежедневно в 02:30 `30 2 * * *`: минута 30 и час 2 с неограниченными полями календаря. Дважды в день в 06:00 и 18:00 — `0 6,18 * * *`; запятая объединяет два значения часов, а минуты остаются фиксированными. Оба варианта легче просматривать, если список часов указан явно, а не дублируется в две строки.
Выбранный часовой пояс меняет моменты времени, отображаемые в тех же полях настенных часов. ToolAcre вычисляет каждого кандидата как локальное время стены в этой зоне и опускает местное время, которого не существует во время прямого изменения часов. Такое поведение предварительного просмотра принадлежит этому инструменту; статья не обобщает это и не превращает это в обещание о каждом демоне.
Будние и выходные дни — 0 8 * * 1-5 и 0 10 * * 0,6, с оговоркой о нумерации воскресенья.
В будние дни в 08:00 — `0 8 * * 1-5`, а утром в выходные в 10:00 — `0 10 * * 0,6`. Этот анализатор принимает воскресенье как 0 или 7 и нормализует оба значения к одному и тому же значению. Имена также поддерживаются, поэтому `MON-FRI` может заменить `1-5` без изменения расширенных дней недели.
Не устанавливайте день месяца одновременно, если только не требуется объединение OR. `0 8 1 * 1-5` не означает рабочие дни только первого числа. Он включает в себя первое число каждого месяца плюс каждый будний день. Генератор предупреждает всякий раз, когда оба поля дня ограничены, и помещает «или» в результирующее предложение.
Ежемесячно, ежеквартально и ежегодно — 0 6 1 * *, 0 6 1 1,4,7,10 * и 0 0 1 1 *
Ежемесячно в 06:00 первого числа `0 6 1 * *`. Ежеквартально в первый день января, апреля, июля и октября — `0 6 1 1,4,7,10 *`. Ежегодный полночный запуск 1 января — это `0 0 1 1 *`, который также является расширением, используемым поддерживаемыми псевдонимами `@yearly` и `@annually`.
В этих примерах используется день, который существует в каждом выбранном месяце. ToolAcre принимает невозможные комбинации как синтаксически допустимые, но предупреждает, когда, например, день 30 связан только с февралем. Февраль 29 получает предупреждение о високосном году. Таким образом, достоверность календаря отображается отдельно от грамматики поля, а не скрывается за одним общим недопустимым сообщением.
Планирование на последний день невозможно выразить с помощью поддерживаемых операторов с пятью полями.
Поддерживаемая грамматика не имеет оператора последнего дня. `L` скорее отклоняется, чем переводится, а день 31 не охватывает месяцы с тридцатью днями или февраль. В книге предлагается проверка даты на стороне команды, но этот репозиторий не выполняет и не проверяет команды, поэтому в статье этот обходной путь не представлен как поддерживаемая функция генератора.
Рассматривайте «последний день каждого месяца» как требование, выходящее за пределы этого языка выражений. Выберите планировщик или стратегию команд, задокументированную реальной целью, и протестируйте ее там. ToolAcre остается полезным для обычных пяти полей, связанных с этим решением, но успех проверки не может создать оператор, который его синтаксический анализатор не реализует.
Поля секунд и иностранные операторы отклоняются этим парсером.
Классические выражения в этом маршруте не имеют позиции секунд или года. Шесть полей отклонены с указаниями о стиле планировщика, ориентированном на секунды. Анализатор также отклоняет `?`, `#`, `L` и `W`, поскольку его средство чтения значений принимает только числа, поддерживаемые трехбуквенные имена, диапазоны, запятые, косую черту и подстановочные знаки.
Поэтому требование субминуты здесь не может быть представлено. Выражение из другого планировщика также не может быть объявлено эквивалентным только потому, что оно выглядит похожим. Подсчитайте позиции, проверьте поддержку оператора и перестройте предполагаемый набор с целевой грамматикой. Пропущенная семантика должна оставаться явным пробелом, а не случайным приближением.
Вывод: создайте из этих десяти — и используйте генератор Crontab, чтобы адаптировать один и прочитать результат.
Обычные расписания становятся безопаснее, когда у каждого токена есть причина: ноль обозначает границу, запятая называет альтернативы, диапазон включает оба конца, а звездочка открывает поле. Предварительные настройки предоставляют несколько отправных точек, включая поминутные, четвертьчасовые, почасовые, ежедневные, рабочие часы в будние дни, воскресные, ежемесячные и годовые формы.
Адаптируйте ближайшую предустановку, прочитайте сгенерированное предложение и просканируйте следующие пять раз в намеченной зоне машины. Эта последовательность проверяет намерение выражения, сохраняя при этом развертывание вне браузера. Хороший пример не просто готов к копированию; оно достаточно мало, чтобы другой рецензент мог понять, почему здесь присутствует каждое поле.