среда, 9 февраля 2011 г.

Как не переходить на зимнее время на серверах


Наконец-то случилось то, на что все разумные люди уже много лет робко надеялись - клоунада с переводом стрелок отменена! Осталось понять, как мы сообщим об этом радостном событии серверам. Итак, задача: 30 октября 2011 навсегда остаться в московском летнем времени. Сервера у меня под CentOS и FreeBSD, потому все последующие упражнения проверялись именно для этих систем.
До сегодняшнего дня я считал, что летнее московское время соответствует времени GMT+4. Ничего подобного! Простые опыты показали, что все как раз наоборот - GMT-4. Убедиться в этом легко с помощью команды zdump:
$ zdump Europe/Moscow
Europe/Moscow  Wed Feb  9 09:48:59 2011 MSK
$ zdump Etc/GMT-3
Etc/GMT-3  Wed Feb  9 09:49:12 2011 GMT-3
$ zdump Etc/GMT+3
Etc/GMT+3  Wed Feb  9 03:49:15 2011 GMT+3
(проверяется -3, а не -4 потому, что у нас с вами пока зимнее время).
Дальше все достаточно просто (одинаково и для Linux и для FreeBSD):
# ln -sf /usr/share/zoneinfo/Etc/GMT-4 /etc/localtime
(если директории /usr/share/zoneinfo и /etc находятся на разных устройствах, то безопаснее будет использовать не ln, а cp).
В CentOS можно еще поправить параметр ZONE в файле /etc/sysconfig/clock, но - судя по коменту в том же файле, это значение на реальную работу системы не влияет.
Потом на каком-нибудь сервачке, который не жалко, можно заранее поставить время без пяти три 30 октября - и убедиться, что с переходом через 3 часа никакого зимнего времени не наступит.