Solaris и часовые пояса.
В этом году наше правительство в очередной раз приняло закон об окончательном отказе от перевода часов и установлении в зоне MSK часового пояса +3. Oracle, в свою очередь, не сильно торопится с выпуском обновлений. К тому же в ряде случаев компьютеры под управлением Oracle Linux (или её сестры — OpenIndiana) работают в закрытых сетях без доступа к Интернет. Да и доступ к закрытому репозитарию Oracle есть только у официальных подписчиков, ибо поддержка у Oracle стоит денег.
Не нужно объяснять, что правильное время на серверах более, чем важно. Расписание заданий, логи — всё зависит от времени на компьютере. Можно, конечно, смириться и приспособиться считать в уме время запуска приложений через cron и высчитывать время события из журнала с поправкой на неверное время, но это не комильфо, как говорят французы.
Поэтому сегодня мы будем доводить Solaris до понимания указов правительства России вручную. По крайней мере тех, что касаются перевода часов.
Итак.
Приводим файл правил часовых зон в соответствие с новыми реалиями (на примере Europe/Moscow):
/usr/share/lib/zoneinfo/src/europe
В оригинале часть его, отвечающая за московское время выглядит так:
Необходимо добавить ещё одно правило перевода часов, приведя файл к следующему виду:
Как видно из изменений, мы говорим Солярису, что действие смещения в четыре часа относительно UTC заканчивается 26 октября 2014 года и в следующей строке задаём правило UTC+3 без истечения срока годности.
Теперь необходимо это скомпилировать:
#zic /usr/share/lib/zoneinfo/src/europe
и проверить, как применились внесённые нами изменения:
root@v-solaris:~# zdump -v $TZ | grep 2014 Europe/Moscow Fri Oct 10 11:23:40 2014 UTC = Fri Oct 24 15:23:40 2014 MSK isdst=0 Europe/Moscow Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 Europe/Moscow Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0
Как видно, 26 октября 2014 года около 2 часов ночи по Москве системные часы будут переведены на час назад и компьютер будет работать в часовом поясе UTC+3.
Первая строка показывает текущее положение вещей. Собственно, она и будет единственной строкой вывода если выполнить эту проверку до «лечения» или если что-то пошло не так.
Кто-то, возможно, скажет, что статья будет актуальна очень непродолжительное время, что этот перевод часов окончательный… На что внимательный и трезвомыслящий человек ответит, что последний и окончательный перевод часов у нас уже был в 2011 году и никто в России не застрахован от ещё пары-тройки последних и окончательных переводов часов.
Комментов пока нет