Ежедневный дрейф часов на несколько минут

В последние недели я каждое утро замечал, что мои часы отстают на 2-3 минуты. Я заметил, что открытие диалогового окна «Дата и время» в Системных настройках приведет к повторной синхронизации часов с серверами времени Apple. Я использую OS X 10.7.4 Lion на MacBook Pro 8,2.

Что может быть причиной отсутствия автоматической ресинхронизации?

РЕДАКТИРОВАТЬ: я сравнил свой /etc/ntp.confфайл с пиром, также работающим с Lion, и мы заметили, что мой файл содержит:

0000000: 7365 7276 6572 2074 696d 652e 6170 706c  server time.appl
0000010: 652e 636f 6d2e 0a                        e.com..

в то время как у него было:

0000000: 7365 7276 6572 2074 696d 652e 6170 706c  server time.appl
0000010: 652e 636f 6d                             e.com

Его последняя модификация была в середине 2010 года, в то время как мой последний раз модифицировался всего неделю или две назад (примерно когда проблема началась?). Я, конечно, не редактировал файл вручную. Возможно связаны?

РЕДАКТИРОВАТЬ 2: я заметил, что если я изменю свой сервер времени в «Дата и время», скажем, на Азию, мой /etc/ntp.confфайл станет:

0000000: 7365 7276 6572 2074 696d 652e 6173 6961  server time.asia
0000010: 2e61 7070 6c65 2e63 6f6d 2e0a            .apple.com..

в комплекте с завершающим символом 0x2e. Итак, кажется, что OS X добавляет завершающий . автоматически, но новая система Lion не содержит этого завершающего символа. Все еще не уверен, влияет ли это на синхронизацию.

РЕДАКТИРОВАТЬ 3: Прошло 24 часа с тех пор, как я изменил сервер времени на «Apple Asia», а затем обратно на «Apple Americas» - никакого дрейфа времени. странный.

Просто общий комментарий... Я бы подумал, что компьютерные часы должны показывать более точное время, без необходимости постоянной повторной синхронизации с сервером времени? Мой настольный ПК настроен на повторную синхронизацию раз в неделю, но в этот период времени не теряется. Много лет назад, когда я обслуживал ПК, медленные системные часы часто были результатом отказа литиевой батарейки?!

Ответы (2)

Похоже, что некоторые специальные символы были вставлены в конце (особенно часть 0x2e, которая представляет собой простой .), и теперь OS X интерпретирует это как часть имени сервера. Чтобы исправить, просто запустите

sudo echo server time.apple.com > /etc/ntp.conf
sudo chown root:wheel /etc/ntp.conf

из Терминала.

Что касается того, почему у вас есть эта проблема, я понятия не имею.

Я так и подозревал. Я уже отредактировал файл, чтобы он не содержал символ 0x2e, и перезагрузился, и в основном жду, не накопится ли снова значительный дрейф. Тем не менее, я хотел бы знать, как это могло произойти и почему открытие «Дата и время» приводит к тому, что он, по-видимому, не использует файл ntp.conf для повторной синхронизации?
Изменение сервера из «Даты и времени», вероятно, также решило бы проблему. Открытие панели без каких-либо изменений не приводит к обновлению файла конфигурации.
При изменении сервера времени через диалоговое окно «Дата и время» OS X фактически изменяет ntp.confфайл, чтобы он содержал символ 0x2e и завершающую новую строку. Я не думаю, что это причина.
Ах, когда я меняю имя сервера через «Дата и время», я получаю трейлинг . также. Кажется, это проблема Льва.

Поскольку я (экспериментально) внес следующее изменение, у меня перестали возникать проблемы с дрейфом часов, несмотря на то /etc/ntp.conf, что содержимое файла технически не изменилось:

Откройте Date & Timeдиалоговое окно настроек, измените сервер времени с Apple Americas/U.S. (time.apple.com)на , Apple Asia (time.asia.apple.com)а затем обратно на Apple Americas/U.S. (time.apple.com). С этого момента мой ежедневный дрейф во времени прекратился.

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

Хотя это и не окончательный ответ, я столкнулся с тем, что файлы .plist повреждались и вызывали всевозможные проблемы, которые, по-видимому, устранялись путем «радикального» изменения настроек, а затем возвращались к «нормальному». Это заставляет файл .plist перезаписываться, перезаписывая поврежденные биты.