Отключить изменения летнего времени (DST) в Linux
Несколько недель назад было объявлено (Министерством энергетики и природных ресурсов Турции), что летнее время будет постоянным, а GMT+3 будет использоваться в стране навсегда.
В настоящее время часовой пояс наших серверов Linux установлен в Европе / Стамбуле. Но обновление tzdata еще не выпущено.
Из-за отсутствия обновления часовой пояс будет изменен с GMT+3 на GMT+2 30 октября 2016 года автоматически, как указано в файле zoneinfo (/usr/share/zoneinfo/Europe/Istanbul).
Вы можете увидеть детали на 2016 год ниже:
# zdump -v /usr/share/zoneinfo/Europe/Istanbul | grep 2016
/usr/share/zoneinfo/Europe/Istanbul Sun Mar 27 00:59:59 2016 UT = Sun Mar 27 02:59:59 2016 EET isdst=0 gmtoff=7200
/usr/share/zoneinfo/Europe/Istanbul Sun Mar 27 01:00:00 2016 UT = Sun Mar 27 04:00:00 2016 EEST isdst=1 gmtoff=10800
/usr/share/zoneinfo/Europe/Istanbul Sun Oct 30 00:59:59 2016 UT = Sun Oct 30 03:59:59 2016 EEST isdst=1 gmtoff=10800
/usr/share/zoneinfo/Europe/Istanbul Sun Oct 30 01:00:00 2016 UT = Sun Oct 30 03:00:00 2016 EET isdst=0 gmtoff=7200
(В случае отсутствия обновлений) Чтобы не допустить кризиса в этой ситуации, мы решили создать план резервного копирования, в котором для часовых поясов наших серверов установлено фиксированное время GMT+3; но мы сталкиваемся со странным поведением, когда установлено фиксированное GMT + 3.
Давайте посмотрим, какое местное время и время UTC на нашем сервере, прежде чем вносить какие-либо изменения в часовой пояс.
# date
Wed Sep 21 11:13:11 EEST 2016
# date -u
Wed Sep 21 08:13:15 UTC 2016
Мы устанавливаем часовой пояс с фиксированным GMT+3 следующим образом:
# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Etc/GMT+3 /etc/localtime
Давайте посмотрим, какое местное время и время UTC на нашем сервере после изменения. Время по Гринвичу + 3 на 3 часа раньше, чем по Гринвичу, где оно должно быть на 3 часа позже, чем по Гринвичу, как видно из выходных данных выше.
# date
Wed Sep 21 05:14:24 GMT+3 2016
# date -u
Wed Sep 21 08:14:26 UTC 2016
Он не меняется, даже если мы сбрасываем местное время или время UTC.
# date -s "21 Sep 2016 11:16:00"
Wed Sep 21 11:16:00 GMT+3 2016
# date
Wed Sep 21 11:16:02 GMT+3 2016
# date -u
Wed Sep 21 14:16:05 UTC 2016
# date -u -s "21 Sep 2016 11:16:00"
Wed Sep 21 11:16:00 UTC 2016
# date
Wed Sep 21 08:16:01 GMT+3 2016
# date -u
Wed Sep 21 11:16:02 UTC 2016
Почему смещение кажется обратным?
2 ответа
Обновление № 1: Обновление базы данных часовых поясов выпущено недавно для нескольких операционных систем в их официальных репозиториях. Версия tzdata2016g
включает настройки для упомянутого изменения.
В какой-то момент этот вопрос является дубликатом вопроса, заданного на superuser.com.
Кристально чистый ответ
"Такие зоны, как Etc/GMT+6, намеренно меняются местами для обратной совместимости со стандартами POSIX"
Но я считаю, что его не следует удалять, чтобы помочь людям, которые хотят отключить изменения DST в системах Linux.
Чтобы отключить изменения DST, свяжите ваш /etc/localtime
файл в один из файлов zoneinfo, размещенный в папке /usr/share/zoneinfo/Etc/
Пример команды:
# ln -s /usr/share/zoneinfo/Etc/GMT+3 /etc/localtime
Чтобы выбрать наиболее подходящий файл zoneinfo, поменяйте знак целевого GMT.
т.е. для установки часового пояса GMT+3 (который на 3 часа опережает UTC), следует использовать /usr/share/zoneinfo/Etc/GMT-3
В какой-то момент новые версии таблицы TZ будут выпущены и доступны для обновлений для всех дистрибутивов Linux. Хм.... Я мог бы поклясться, что обновленная таблица часовых поясов была доступна вскоре после объявления об этой проблеме. Возможно, для вашей ситуации может быть новый обозначение TZ.