Русский

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

Почему в cron нет поля часового пояса: местное время, CRON_TZ и контейнеры в UTC

· Фон

хрон часовые пояса планирование

Одно выражение из пяти полей, указывающее на часы в UTC, Токио и Нью-Йорке.
Оригинальная векторная иллюстрация ToolAcre

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

Одни и те же поля создают разные моменты предварительного просмотра при изменении выбранной зоны.

`0 9 * * *` содержит час, но не указывает местоположение. В ToolAcre выбор UTC или Asia/Tokyo оставляет пять полей неизменными, одновременно изменяя момент, представленный каждым кандидатом на настенные часы 09:00. Таким образом, отчет может появиться с разницей в несколько часов, если две среды интерпретируют одни и те же локальные метки в разных зонах.

Панель делает эту зависимость явной с помощью селектора «Показать следующий запуск». При просмотре расписания используйте зону предполагаемой машины, а затем запишите это предположение рядом с выражением. Выбор влияет только на предварительный просмотр в браузере; он не встроен в скопированный текст cron.

Выражение не содержит зоны; Выбор часов внешнего демона здесь не настраивается

Существует ровно пять спецификаций полей, ни одно из которых не имеет названия часового пояса. `nextRuns` принимает зону как отдельный параметр и по умолчанию использует среду хоста, видимую JavaScript. Такое разделение доказывает, что контекст зоны является внешним по отношению к выражению в модели ToolAcre.

В книге указано, какие часы читает каждый демон. Этот репозиторий не может настраивать или проверять демон, поэтому он не устанавливает универсальное поведение. Он может только посоветовать сопоставить зону предварительного просмотра с документированной интерпретацией цели и самостоятельно проверить установленный планировщик.

Поддержка CRON_TZ находится за пределами этого парсера и не заявлена

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

Если цель документирует директиву часового пояса, настройте и протестируйте ее там. Не ждите, что ToolAcre сохранит директиву при копировании выражения. Сохраняйте метаданные зоны рядом с расписанием до тех пор, пока целевая конфигурация не будет проверена и развернута.

Семантика среды TZ не моделируется.

Назначение `TZ` также находится за пределами области действия. Браузер использует явный параметр `timeZone` для форматирования и преобразования, а не строку среды внутри файла crontab. Он не может определить, изменяет ли назначение оценку расписания, вывод команды или ничего в другой системе.

Эта поправка позволяет избежать тонкого, но дорогостоящего предположения. Похожие имена не означают идентичные роли. Рассматривайте выбор зоны планировщика и среды процесса как отдельные вопросы и отвечайте как на целевой реализации, так и на основе генератора выражений.

Для настроек по умолчанию для контейнеров и облаков требуются целевые доказательства

Контейнеры и облачные образы по маршруту не проверяются. Сокет Docker, часы хоста или служба метаданных не запрашиваются. Утверждения о том, что по умолчанию они имеют значение UTC, могут быть верными в конкретном развертывании, но не могут быть обобщены на основе `Intl.DateTimeFormat`, запущенного в браузере читателя.

Захватите фактическую целевую зону с помощью документированных инструментов и конфигурации. Затем выберите то же имя IANA в ToolAcre, если оно доступно. Список зон браузера отражает то, что знает его механизм; это не доказывает, что цель содержит идентичные данные или настройки зоны.

Рабочий пример: предварительный просмотр 09:00 в двух выбранных зонах без жесткого кодирования сезонного преобразования.

Оставьте `0 9 * * *` фиксированным и просмотрите один результат в UTC, а затем в Америке/New_York. В каждом списке отображается 09:00 как время стены, но моменты эпохи различаются применимым смещением зоны. Избегайте публикации одного постоянного преобразования часов, поскольку региональные смещения могут меняться в зависимости от даты.

Тесты демонстрируют этот принцип на UTC и в полночь в Токио, а также на ежедневной работе в Лондоне при изменении направления движения. Используйте живых кандидатов на рассматриваемые даты. Если при развертывании расписание преобразуется в фиксированный UTC час, задокументируйте сезонное ограничение, а не подразумевайте, что одно значение навсегда сохранит локальный 09:00.

Обработка кандидатов DST — это предварительное поведение ToolAcre, а не гарантия демона.

ToolAcre создает кандидатов как компоненты локального календаря и преобразует их с помощью данных зоны браузера. Несуществующее время перехода вперед опускается, и обычный ежедневный час остается тем же самым локальным часом во время тестируемого перехода. Это факты предварительной реализации.

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

Вывод: расписание имеет только свою зону — создайте поля в генераторе, а затем запишите часовой пояс рядом с ними.

Расписание является операционно неполным без контекста зоны, даже если его пять полей синтаксически полны. ToolAcre представляет эту истину, сохраняя зону в отдельном селекторе и показывая полученный список настенных часов. Само по себе скопированное выражение не может нести в себе выбор.

Запишите выражение лица и зону вместе, проверьте целевую конфигурацию и повторно посетите кандидатов при изменении смещения. Генератор создает и поясняет расписания; он не устанавливает часы сервера, не записывает директивы часового пояса и не обещает выполнения. Эта граница делает предварительный просмотр полезным, не перегружая контроль.