Назад | Перейти на главную страницу

Отключить переход на летнее время (DST) в Linux

Несколько недель назад было объявлено (Министерством энергетики и природных ресурсов Турции), что летнее время будет постоянным, а время по Гринвичу + 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

(В случае отсутствия обновления) Чтобы эта ситуация не переросла в кризис, мы решили создать план резервного копирования, который устанавливает часовой пояс наших серверов на фиксированное время по Гринвичу + 3; но мы сталкиваемся со странным поведением, когда фиксированное время по Гринвичу + 3 установлен.

Давайте посмотрим, какое местное время и время в формате UTC на нашем сервере, прежде чем вносить какие-либо изменения в часовой пояс.

# date
Wed Sep 21 11:13:11 EEST 2016
# date -u
Wed Sep 21 08:13:15 UTC 2016

Мы устанавливаем часовой пояс на фиксированное время по Гринвичу + 3 следующим образом:

# rm -f /etc/localtime
# ln -s /usr/share/zoneinfo/Etc/GMT+3 /etc/localtime

Посмотрим, какое местное время и время UTC на нашем сервере после изменений. GMT + 3 время 3 часа ранее чем UTC, где должно быть 3 часа потом чем UTC, как видно из вывода выше.

# 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

Почему смещение кажется обратным?

Обновление №1: Обновление базы данных часовых поясов выпущено недавно для нескольких операционных систем в их официальных репозиториях. Версия tzdata2016g включает настройки для упомянутого изменения.

В какой-то момент этот вопрос является дубликатом вопрос задан на superuser.com.

Кристально чистый ответ

«Зоны, подобные Etc / GMT + 6, намеренно перевернуты для обратной совместимости со стандартами POSIX»

Но я считаю, что его не следует удалять, чтобы помочь людям, которые хотят отключить изменение летнего времени в системах Linux.

Чтобы отключить переход на летнее время, свяжите свой /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.