Как организовать перевод часов 26 октября 2014 года на linux CentOS

Спасибо нашему правительству, 26 октября 2014 года мы переходим раз и навсегда с летнего времени на зимнее, то есть меняем UTC+4 на UTC+3. Простые обыватели переведут с вечера стрелки часов и на этом успокоятся, а мы айтишники готовимся к этому событию сильно заранее. Вот и у меня старенький сервер на не менее старенькой CentOS 5.9, но несущий на себе бизнес-критикал приложения, требует подготовиться к переводу стрелок заранее. Нусс приступим.
Для начала пробуем подготовиться к переходу на зимнее время автоматически, а попозже рассмотрим ручной апдейт.

  • Итак, смотрим какая у нас текущая временная зона:
    cat /etc/sysconfig/clock | grep ZONE
    ZONE="Europe/Moscow"
  • Проверяем запланирована ли смена часовых поясов для нашей зоны в 2014 году:
    zdump -v Europe/Moscow |grep 2014
    Вывод пустой - значит не запланировано. Необходимо исправить, так как смена часового пояса точно будет 26 октября!

  • Попытаемся обновить информацию о переходе с летнего времени на зимнее автоматически, для этого обновляем пакет tzdata:
    yum update tzdata.noarch tzdata-java.noarch -y
    Если у вас не получается выполнить автоматическое обновление, например нет доступа в интернет у сервера, ниже будет рассмотрено ручное обновление информации о смене часового пояса 26 октября 2014 года в линукс.
  • Проверяем помогло ли обновление узнать системе о скорой смена часового пояса:
    zdump -v Europe/Moscow |grep 2014
    Europe/Moscow  Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
    Europe/Moscow  Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
    Бинго! Часы будут переведены в назначенный правительством срок.


Если у вас нет доступа в интернет или еще по какой причине вы не хотите пользовать стандартные репозитарии - обновляемся вручную!

  • Будем считать, что мы уже посмотрели какой у нас временной пояс и проверили, что пока перевод стрелок часов в системе 26 октября 2014 не запланирован. Если вы этого не сделали, то настоятельно рекомендую выполнить команды из первой части, чтобы прояснить данные, ведь они нам понадобятся! С 2011 года, временными зонами заведует IANA. Идем к ней для выкачки последней версии файла, которую можно найти здесь http://www.iana.org/time-zones. Качаем и распаковываем:
    cd /tmp
    wget http://www.iana.org/time-zones/repository/releases/tzdata2014g.tar.gz
    tar xvzf tzdata2014g.tar.gz
  • Cкомпилируем временные зоны из нашего региона - файл europe. Zic читает текстовый файл с зонами и формирует бинарные файлы спец формата. Обратите внимание, что утилита без ключа -d пишет файлы временных зон сразу в /usr/share/zoneinfo.
    zic europe
  • Создадим ссылку на обновленную временную зону:
    ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
  • Проверим, что 26 октября 2014 года состоится переход из временной зоны UTC+4 в зону UTC+3:
    [root@nwbg ~]# zdump -v Europe/Moscow |grep 2014
    Europe/Moscow  Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
    Europe/Moscow  Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800
    Все верно! Переход в другую временную зону будет произведен корректно.

Точных часов вам и не спешите!