Отмена перехода на зимнее время на Linux - сервере
Фабула: В России отменен переход на зимнее время, то есть, с 29 на 30 октября 2011 года переводить часы на зимнее время не нужно.
Цель: поправить прокси-сервер, работающий как сервер NTP в локальной сети.
Решение:
1. Для обновления базы часовых поясов необходимо скачать последнюю версию базы:
tzdata2011n.tar.gz
Я скачал его по ссылке ftp://elsie.nci.nih.gov/pub/ (либо скачать прямо отсюда) и распаковал в /tmp/ntp. (расположение временной директории не имеет значения).
2. Проверяем текущую установленную зону
[root@proxy Asia]# cat /etc/sysconfig/clock|grep ZONE
ZONE="Asia/Yakutsk"
3. Текущий часовой пояс в Linux устанавливается в файле /etc/localtime, который является либо копией, либо ссылкой на файл временной зоны, находящийся в каталоге: /usr/share/zoneinfo.
В моем случае (Часовой пояс Yakutsk(GMT+9 + RedHat) файл /etc/localtime является копией файла /usr/share/zoneinfo/Asia/Yakutsk
В случае необходимости можно поменять зону путем копирования/создания_ссылки соответствующего файла из /usr/share/zoneinfo/ в /etc/localtime, например:
[root@proxy Asia]# ln –sf /usr/share/zoneinfo/Asia/Vladivostok /etc/localtime
Либо использовать псевдографическую утилиту конфигурирования часового пояса:
[root@proxy Asia]# timeconfig
4. Проверяем активное расписание перехода на зимнее/летнее время для текущей зоны:
[root@proxy Asia]# zdump -v Asia/Yakutsk|grep 2011
Asia/Yakutsk Sat Mar 26 16:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 YAKT isdst=0 gmtoff=32400
Asia/Yakutsk Sat Mar 26 17:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 YAKST isdst=1 gmtoff=36000
Asia/Yakutsk Sat Oct 29 16:59:59 2011 UTC = Sun Oct 30 02:59:59 2011 YAKST isdst=1 gmtoff=36000
Asia/Yakutsk Sat Oct 29 17:00:00 2011 UTC = Sun Oct 30 02:00:00 2011 YAKT isdst=0 gmtoff=32400
[root@proxy Asia]#
Если две последние строки с правилами перехода на 30 октября отсутствуют, то значит временная база обновлена и необходимости в дальнейших действиях нет.
5. Возвращаемся во временную директорию, куда мы распаковали свежую базу 2011n, и проверяем правила в файле europe. Как ни странно, но и Якутск и Владивосток описаны именно в этом файле. Ищем следующие строки:
Zone Asia/Yakutsk ……………….
9.00 Russia YAK%sT 2011 Mar 27 2:00s
Если такая запись есть, то можем приступать к компилированию данного файла.
6. Компилируем временные зоны из файла europe:
[root@proxy Asia]# zic ./europe
7. Сроздаем ссылку на обновленный файл временной зоны:
[root@proxy Asia]# ln –sf /usr/share/zoneinfo/Asia/Yakutsk /etc/localtime
8. Проверяем правила перехода для текущей временной зоны
[root@proxy ntp]# zdump -v Asia/Yakutsk |grep 2011
Asia/Yakutsk Sat Mar 26 16:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 YAKT isdst=0 gmtoff=32400
Asia/Yakutsk Sat Mar 26 17:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 YAKT isdst=0 gmtoff=36000
[root@proxy ntp]#
9. В случае необходимости синхронизируем аппаратные часы по системному времени
bash# hwclock --systohc
10. Готово
|