Как справиться с переходом на летнее время в работе cron

485
user1334007

У меня задание cron на машине amazon ec2 (Ubuntu 16.04), которая должна работать в 2:00 по центральному времени.

Задание cron запланировано с использованием времени UTC. Поскольку центральное время в настоящее время UTC-5 (сейчас у нас летнее время), оно выглядит следующим образом:

0 7 * * * /home/ubuntu/runetl.sh 

Таким образом, он работает в 7:00 утра по UTC, и это правильно.

Но когда мы вернемся к стандартному времени, Central изменится на UTC-6, поэтому задание начнет выполняться в 1:00 по центральному времени. Это не то, что я хочу. Я хочу, чтобы они всегда работали в 2 часа ночи, независимо от времени суток или стандартного времени.

Как я могу это сделать?

1
Серверы Linux автоматически настраиваются на DST и CST (EST и т. Д.), Если для вашей локали в системе установлен этот часовой пояс. Есть ли причина, по которой вы не можете установить сервер в качестве часового пояса? Установка через UTC кажется глупой. JakeGould 5 лет назад 0
Поскольку UTC не соблюдает переход на летнее время, самое простое решение - установить часовой пояс вашей системы в формате UTC. Это означает, что он всегда будет работать в 7:00 UTC. В зависимости от времени года, задание может выполняться в 3 часа утра или в 2 часа утра, но всегда будет выполняться в 7 часов утра по Гринвичу. Ramhound 5 лет назад 0

1 ответ на вопрос

2
Alex

Запустите sudo dpkg-reconfigure tzdataи установите местный часовой пояс (вместо UTC), который вам нужен. Также настройте и запустите ntpдемон, который точно синхронизирует время и будет постепенно плавно переключаться между режимами экономии времени в дневное время, что очень важно для критически важной задачи, такой как биллинг, почтовые серверы.