Ntpdate

Для синхронизации времени по сети используется протокол NTP.

Плавная подводка часов
Плавная подводка часов производится только в том случае, когда используется ntpd. Нужно использовать для серверов (особенно, с базами данных).

Грубая подводка
Разовая синхронизация времени на основе информации о зоне. Показана для новых инсталляций и выставлению времени после сбоев. А также для настольных систем, которые регулярно перезагружаются и время может выставляться при старте без вреда для работающих приложений.

По-видимому, не стоит выполнять на машинах где запущены базы данных и прочие севисы зависимые от времени. В выводе команды показано, на какое время было переведено время (на 174 секунды назад). Когда запустил её из X org, то экран погас и стал отображаться только через некоторое время.

Разово
По-видимому учитывает временную зону или тут решает все указанный сервер (?). "29 May 14:20:47 ntpdate[10002]: step time server 88.212.197.86 offset -174.698430 sec"
 * 1) ntpdate ru.pool.ntp.org

При выполнении команды были указаны в качестве зоны следующие данные: Fri May 29 14:28:02 MSD 2009

При каждой загрузке ОС
Адрес сервера отсюда http://www.pool.ntp.org/zone/ru echo 'ntpdate_enable="YES"'>>/etc/rc.conf echo 'ntpdate_hosts="ru.pool.ntp.org"' >> /etc/rc.conf echo 'ntpdate_flags="-b"' >> /etc/rc.conf

Сказано, что ключ -b в документации к утилите надо добавлять в том случае, когда запускается при загрузке. В том случае используется вызов settimeofday(2) вместо adjtime(2)

Доступные параметры для rc.conf grep ntpdate /etc/defaults/rc.conf ntpdate_enable="NO"            # Run ntpdate to sync time on boot (or NO). ntpdate_program="/usr/sbin/ntpdate"    # path to ntpdate, if you want a different one. ntpdate_flags="-b"             # Flags to ntpdate (if enabled). ntpdate_config="/etc/ntp.conf" # ntpdate(8) configuration file ntpdate_hosts=""               # Whitespace-separated list of ntpdate(8) servers.

Часовая зона
Ядро всегда работает в UTC, если системное время локальное, то изменение осуществляется через adjkerntz. В UTC нет летнего времени, поэтому летнее время это UTC+4, а зимнее UTC+3. Соответственно, чтобы выставить системные часы в UTC летом для московского времени, надо вычесть 4 часа (а не три).

Отличие UTC-времени и локального хранится в переменной machdep.adjkerntz: -14400 (т.е. 4 часа). Когда системные часы в UTC, то эта переменная имеет значение 0.

Просмотр UTC-времени date -u

Файлы зон находятся в соответствующей директории, чтобы сменить зону нужно скопировать этот файл. Того же (?) можно добиться, используя sysinstall(Configure => Time Zone). Компонента для установки времени может быть вызвана напрямую по команде tzsetup. cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Если удалить файл /etc/localtime, то время будет в UTC.

При установке или ручном запуске sysnstall и выборе пункта для настройки зоны, задают вопрос, как настроены ваши системные часы, в UTC или локальное время.Если выбрать No, то будет создан пустой файл /etc/wall_cmos_clock. Это же отражается в переменной ядра machdep.wall_cmos_clock.

Если файл существует, то adjkerntz, запущенный при старте системы как демон, выполняет определенные действия по синхронизации времени. Учитывает значение переменной TZ, но если используется tzsetup, переменная остается неинициализированная.