Русский

Инструменты разработчика · Генератор Crontab

Как работают пять полей crontab: минуты, часы, день, месяц, день недели.

· Как это работает

хрон планирование рабочий процесс разработчика

Пять позиций расписания cron, сопоставленных с символами часов и календаря.
Оригинальная векторная иллюстрация ToolAcre

Каждое расписание cron состоит из пяти позиционных полей, порядок которых никогда не меняется. В этом посте объясняется диапазон каждого поля, особый случай воскресенья и то, как строка становится набором совпадающих минут.

Резервная копия, которую нужно запускать на 02:30 каждую ночь — и пять звезд, которые вы не знаете, как поставить

Вам нужна резервная копия в 02:30 каждую ночь, но продолжайте путать, какой из пяти звезд принадлежит час. Cron является позиционным: число в неправильном столбце создает другое расписание, хотя на первый взгляд оно выглядит действительным. Начните с времени, когда должно быть выполнено задание, часового пояса компьютера и владельца crontab; только потом заполняйте поля. ToolAcre может анализировать и описывать выражение, но не устанавливает задание и не запускает команду резервного копирования.

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

Строка пользовательского crontab содержит минуты, часы, день месяца, месяц, день недели, а затем команду. В 30 2 * * * backup.sh, 30 — это минуты, а 2 — часы: 02:30 каждый день в часовом поясе этой среды cron. Команда не является шестым полем времени. Общесистемный /etc/crontab может включать пользовательское поле перед командой, поэтому слепое копирование системной записи в ваш личный crontab может привести к запуску непреднамеренной команды.

Диапазоны каждого поля — 0–59, 0–23, 1–31, 1–12 и 0–7, где 0 и 7 оба означают воскресенье в большинстве cron

Минуты принимаются 0–59, часы 0–23, день месяца 1–31, месяц 1–12 и день недели 0–7 в моделях Vixie ToolAcre; 0 и 7 означают воскресенье. Звездочка означает все значения в этом поле. Диапазоны и списки, разделенные запятыми, могут ограничивать значения, но числовой диапазон поля по-прежнему применяется. 25 в позиции часа не является графиком поздней ночи: он недействителен, и его следует сообщать, а не переносить на следующий день.

Как работает сопоставление: cron просыпается каждую минуту и ​​запускает строку, если поля времени совпадают (за одним исключением для двух полей дня)

Cron проверяет соответствующие поля каждую минуту. Минуты, часы и месяц должны совпадать. Для двух полей дня в Vixie cron действует специальное правило: когда ограничены и день месяца, и день недели, совпадение любого из них может запустить задание, но не обязательно обоих. Таким образом, 0 0 13 * 5 означает тринадцатое число месяца или каждую пятницу, а не только пятницу тринадцатого. С подстановочными знаками в дневных позициях ночной пример ведет себя так, как предполагалось. Пояснительные выходные данные инструмента делают этот выбор видимым перед установкой.

Рабочий пример: 30 2 * * * backup.sh — читаете вслух, затем с нуля пишете «будние дни в 08:15».

Прочтите вслух 30 2 * * * backup.sh как «запускайте backup.sh в 02:30 каждый день». Для будних дней в 08:15 укажите минуту 15, час 8, неограниченный день /month и дни недели 1–5: 15 8 * * 1-5. Вставьте только пять полей расписания в генератор Crontab и проверьте его описание и список следующего запуска; затем установите команду, используя собственный редактор crontab. Для резервного копирования, которое выполняется при переходе на летнее время, проверьте временные метки следующего запуска в фактической зоне, а не предполагайте, что все локальные 02:30 существуют.

Названия месяцев и дней недели, включая поддерживаемые диапазоны имен.

Многие диалекты cron принимают трехбуквенные имена, такие как JAN или MON, вместо цифр. Имена могут сделать расписание, поддерживаемое человеком, более понятным, но использование 0/7 для воскресенья остается распространенным явлением, а другие реализации cron могут иметь другие расширения. ToolAcre распознает общие названия и диапазоны месяцев и дней недели, такие как JAN-MAR и MON-FRI; его анализатор принимает 15 8 * JAN-MAR MON-FRI. Другая реализация cron или облачный планировщик может использовать другое количество полей или расширений, поэтому перед установкой этой строки ознакомьтесь с собственной грамматикой этой среды.

Что этот обзор не охватывает полностью: списки, шаги и среда выполнения.

Во введении объясняется правило ИЛИ дневного поля Vixie, но не рассматриваются его сложные комбинации со списками и шагами, оболочка/environment, которая выполняет команду, или поведение перехода на летнее время; каждый может изменить, будет ли выполняться реальная задача. Валидатор может описать расписание, но не может гарантировать, что backup.sh существует, имеет разрешение или создал восстанавливаемые резервные копии. Прежде чем полагаться на запись производственного cron, протестируйте резервное копирование и восстановление.

Вывод: пять полей, одна грамматика — и генератор Crontab строит выражение и объясняет его вам.

Пять позиций образуют одну грамматику. Генератор Crontab считывает предложенное вами расписание, называет каждое поле и показывает предстоящие выполнения в выбранной зоне, не устанавливая ничего в вашей системе. Введите примеры для ночного и буднего дня, сравните то, что говорит инструмент, с тем, что вы предполагали, а затем сохраните решение о команде и часовом поясе в эксплуатационной документации задания.