Как синхронизировать системные часы с Mavericks?

У меня есть 27-дюймовый iMac середины 2011 года, работающий под управлением Mavericks (10.9.1). Я обновился с Mountain Lion этой осенью, когда была выпущена Mavericks. Раньше у меня никогда не было проблем с системными часами.

С момента установки Mavericks мои часы постоянно отстают примерно на 20 секунд в день. У меня правильно установлен часовой пояс, и в системных настройках даты и времени установлен флажок «Автоматически устанавливать дату и время». Он настроен на использование «Apple/Americas/US (time.apple.com)».

Когда я открываю панель «Системные настройки даты и времени», мои часы сразу настраиваются на правильное время, но, не открывая панель, они довольно быстро сбиваются с пути.

Я перезагрузился, установил и снял флажок, чтобы установить дату и время автоматически, и, похоже, это не помогло.

Любые решения или идеи?


ОБНОВИТЬ:

Я добился того, что кажется прогрессом. Вопрос: Как узнать, правильно ли обновляются часы на моем Mac? и его принятый ответ от grgarside предоставил много полезной помощи в устранении неполадок. Мой дрейф — колоссальные 499,988 (прибавка 43,19 секунды в день)!

Самое главное, что кардиостимулятор запускается каждые 5 - 15 секунд, о чем свидетельствует мой стволовой лог, однако каждый раз при запуске выдает ошибку:

Feb  1 11:53:29 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:53:39 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:53:51 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:53:59 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:54:09 jsw.local pacemaker[19928]: adjtime: Operation not permitted
Feb  1 11:54:19 jsw.local pacemaker[19928]: adjtime: Operation not permitted

Кажется, у меня проблема с разрешением, но я не могу понять. Я выгрузил и перезагрузил кардиостимулятор, пожалуйста, через launchctl

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.pacemaker.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.pacemaker.plist

вот текстовый экспорт моего com.apple.pacemaker.plist

{
    Label = "com.apple.pacemaker";
    ProgramArguments = (
        "/usr/libexec/pacemaker",
        "-b",
        "-e",
        "0.0001",
        "-a",
        10,
    );
    KeepAlive = {
        PathState = {
            "/private/var/db/ntp.drift" = YES;
        };
    };
}

мой файл /private/var/db/ntp.drift принадлежит пользователю root:wheel и имеет права доступа 644, /System/Library/LaunchDaemons/com.apple.pacemaker.plist имеет точно такое же право собственности и разрешения.

Я надеюсь, что это обновление предоставит достаточно дополнительной информации, чтобы кто-то мог решить эту проблему.

У меня никогда не было, чтобы система отключалась, как вы описываете, но другому человеку здесь нужно было выбрать другой сервер времени (Азия, если вы в настоящее время используете США), а затем переключиться обратно , чтобы настройка закрепилась.
Я предполагаю, что что-то не так с вашим DNS или хост-файлом. Изменяли ли вы настройки сети и предпочтения каким-либо образом? Не просто меньше 10,9, а 10,8? Я бы попробовал перейти с time.apple.com на один из URL-адресов pool.ntp.org/en .
@ЭндрюУ. Ваш комментарий не учитывает тот факт, что время, по-видимому, правильно синхронизируется, когда я открываю панель настроек.
@bmike Я пытаюсь это сделать, просто еще не вернулся к этому iMac, чтобы проверить. Спасибо, Скотт
Мой сервер времени был настроен на time.euro.apple.com в течение последних 24 часов. Я все еще испытываю дрейф.
Вчера переустанавливал ОС. часы все еще дрейфуют. Я работаю со службой поддержки Applecare, но не уверен, что они смогут это исправить.
@ Скотт, мой комментарий не забывает об этом.
Этот вопрос выглядит многообещающе, я скоро попробую и обновлю здесь, когда узнаю.
У меня точно такая же проблема - часы смещаются на минуты в неделю, но сразу же правильно синхронизируются, когда я открываю панель настроек часов. Я заметил, что ошибку «adjtime: операция не разрешена» можно устранить, запустив кардиостимулятор в командной строке через sudo: sudo /usr/libexec/pacemaker -v Но на самом деле это не решение, а просто намек на то, что может происходить. неправильно за кадром.

Ответы (9)

кажется, они нормально работают на моем iMac с Mountain Lion:

0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org time.apple.com

просто скопируйте/вставьте разделенную пробелом строку выше в поле «Установить дату и время автоматически» в настройках даты и времени. не забудьте нажать Enter после ввода имен серверов ntp, чтобы обновить ntp.conf.

Я не понимаю, почему это сработало, но это сработало!
В Yosemite это стало раскрывающимся списком, который, похоже, не любит редактировать (хотя вроде как вы можете его редактировать...) :(
Вы все еще можете редактировать в Yosemite (я только что сделал!). Если вы выберете раскрывающийся список и нажмете клавишу Delete, вы увидите, что текст исчезает. Вы не можете использовать cmd + v для вставки, но второй щелчок дает вам возможность вставки в меню.

ntpd Maverisks сломан, разбит, поврежден. Apple знает об этом: я часами разговаривал с ними по телефону, предоставляя им образцы и файлы в изобилии. Это может быть перенос с iOS («Назад к Mac», независимо от того, работает ли он на самом деле). Виновником, похоже, является новый демон Maverisks под названием «кардиостимулятор», который в классической манере Apple недостаточно задокументирован и, похоже, не ведет себя в соответствии с той небольшой документацией, которая есть.

Здесь есть продолжительная дискуссия по этому поводу: обсуждения.apple.com /thread/5604114
Проверьте ChronyControl Брайана Кристиансона (Брайан также стоит за WhatRoute). Это возвращает здравомыслие к хронометрированию ntp с использованием Mojave v10.14.4.

Перед новой установкой я настоятельно рекомендую вам попробовать сбросить NVRAM (энергонезависимую память).

NVRAM (или PRAM на старых компьютерах Mac на базе PowerPC) хранит определенные настройки. Это своего рода память, похожая на обычную оперативную память вашего Mac, но с одним существенным отличием в том, что NVRAM хранит то, что находится на ней, даже если ваш Mac выключается.

В частности, информация, хранящаяся в NVRAM/PRAM, включает:

  • Громкость динамика
  • Настройки часового пояса
  • Разрешение экрана
  • Выбор загрузочного диска
  • Недавняя паника ядра, если таковая имеется

Вероятно, то, что хранится в вашем NVRAM о вашем времени, каким-то образом было повреждено и теперь вызывает вашу проблему.

Теперь вы можете спросить, а как насчет синхронизации времени с серверами? Для чего мне это нужно? Ну, это просто для установки времени, а не для того, чтобы делать это вручную. Просто маленький жест; ничего более. После того, как он установлен, он, как обычно, сохраняется в вашем NVRAM.

И ваше время корректируется каждый раз, когда вы открываете настройки даты и времени, потому что, вероятно, открытие там инициирует ручную синхронизацию вашего времени с сервером. Но после этого дела снова идут наперекосяк.

В любом случае, чтобы сбросить NVRAM:

  • Выключите свой Mac.
  • Найдите на клавиатуре следующие клавиши: Command (⌘ ) , Option , P и R. Вам нужно будет одновременно удерживать эти клавиши на шаге 4.
  • Включи компьютер.
  • Нажмите и удерживайте клавиши Command-Option-PR до появления серого экрана.
  • Удерживайте клавиши, пока компьютер не перезагрузится и вы не услышите звук запуска во второй раз.
  • Отпустите ключи.

Источник: Apple

Я мог видеть, что сброс NVRAM очищает неправильный часовой пояс, но поскольку это влияет на хронометраж и способность ntpd не допускать расхождения часов с интернет-источниками — существует много недостающих связей между тем, что хранится в NVRAM, и тем, как устанавливается время. Тем более, что система отключается и самоисправляется во время работы, открывая панель настроек системы. Вы думаете, что это может испортиться во время загрузки?

Можно ntpdateчерез launchd.

Я собрал части вместе на https://github.com/tjluoma/ntp-fix-time , но я включу сюда соответствующие части:

  1. Plist launchd, который входит в /Library/LaunchDaemons/ (потому что его нужно запускать так же, как и rootпри запуске)

  2. Сценарий оболочки, который вызывает ntpdate -u $NTPHOSTи регистрирует свой вывод.

По какой-то причине попытка вызова ntpdateнапрямую через launchdменя не сработала, но вызов через скрипт, похоже, сработал.

Использует plistэто:

    <key>RunAtLoad</key>
    <true/>

чтобы убедиться, что он запускается при перезагрузке Mac.

Этот:

    <key>StartInterval</key>
    <integer>14400</integer>

следит за тем, чтобы он запускался каждые 4 часа, что казалось «достаточно часто».

Сценарий будет использовать серверы, перечисленные в /etc/ntp.conf, если их нет, и в этом случае он будет использовать time.apple.com.

(На manстранице ntpdateпредполагается, что в конечном итоге он будет «удален» из Mac OS X, но он все еще существует в 10.9.1, так что мне этого достаточно.)

Похоже, это сработает - хотя я озадачен, зачем это нужно и есть ли другие системные проблемы, о которых я не знаю.
К сведению: я не сторонник полагаться на переменную PATH ни в LaunchDaemons, ни в заданиях cron. Меня обжигали слишком много раз, я думаю, что гораздо лучше использовать полный путь. В случае LaunchDaemons вы можете указать рабочий каталог, который, если он используется, устраняет необходимость указывать полный путь.

До сих пор мне не удалось устранить дрейф часов. Поскольку мои часы медленно дрейфуют (менее минуты в день), требуется некоторое время, чтобы увидеть, работает ли предпринятое решение.

Я только что попробовал вариант ответа Патрикс из этого поста . Эхо не работало в командной строке, я получил «отказано в доступе» (его ответ ссылался на установку Lion). Но я удалил старый файл и заменил его новым, который я отредактировал с помощью nano.

sudo rm /etc/ntp.conf
sudo touch /etc/ntp.conf
sudo nano /etc/ntp.conf

в файле я просто разместил

server time.apple.com

нет отставания. или новая строка. Затем я вышел из nano (ctrl-X) и ответил «да» на сохранение изменений.

Мне не нужно было менять владельца, так как он уже принадлежал root:wheel.

Я обновлю, когда узнаю, сработало ли это.

Это не сработало
Почему вы трогаете его, прежде чем изменить?

Вот обновленный список серверов, расположенных в Гейтерсберге, штат Мэриленд (я на восточном побережье). Другие серверы указаны по ссылке внизу.

time-a-g.nist.gov time-b-g.nist.gov time-c-g.nist.gov time-d-g.nist.gov time-d-g.nist.gov time-e-g.nist.gov time-e-g.nist.gov

Скопируйте \ вставьте список, разделенный пробелами, в поле «Установить дату и время автоматически» в настройках даты и времени.

Обязательно сбросьте NVRAM после обновления серверов.

Источник

Я хотел предоставить свои два цента по этой проблеме. У меня была похожая проблема. Мои часы отставали на час, и мне помогло снять флажок «Установить часовой пояс» автоматически, используя текущее местоположение, и просто выбрав ближайший город вручную. Не помешает попробовать и посмотреть, есть ли разница.

Как обсуждалось в другом месте, смещение часов происходит из-за того, что ntpd не работает, а что-то, называемое /usr/libexec/pacemaker, также работает неправильно. Отключение кардиостимулятора и запуск ntpdate для ускорения часов сделали часы достаточно стабильными в моей системе с минимальными системными изменениями.

В Терминале выполните эти команды по порядку.

cd /System/Library/LaunchDaemons/
mv com.apple.pacemaker.plist com.apple.pacemaker.plist.OFF
sudo crontab -l > /tmp/foo
echo '*/5 * * * * /usr/sbin/ntpdate -s -B -u time.apple.com' >> /tmp/foo
sudo crontab /tmp/foo

Затем перезапустите систему.

Первые две команды отключают кардиостимулятор, перемещая его файл конфигурации launchd в сторону. Последние три команды сообщают системному демону cron запускать ntpdate каждые пять минут, замедляя или ускоряя часы по мере необходимости и записывая все, что он делает, в /var/log/system.log.

Если вы позвоните в Apple, они предложат вам выполнить переустановку с сохранением операционной системы.

Я предполагаю, что у вас повреждены предпочтения. Вы можете попробовать изменить каждый параметр на панели настроек даты и времени на что-то другое, перезагрузить компьютер, а затем установить его на то, что вы хотите. Если это не сработает, перейдите в каталог «Настройки» и удалите любой список предпочтений, который имеет какое-то отношение к дате и времени настроек.

Переустановить? УЖАСЫ! Вот почему я ушел из Windows много лет назад. Наверняка разумные, интеллигентные люди могут найти решение получше, чем переустановка ОС.
И что касается перехода к директории «Настройки» и удаления списков, связанных с датой и временем. Я считаю эту рекомендацию неполной и опасной. Если это серьезно ваш совет, вы должны A) указать местоположение папки. И B) посоветуйте пользователю переместить файлы в другое место (возможно, на рабочий стол) вместо их удаления. Многие люди с разным уровнем опыта прочтут этот вопрос.
Насколько я понимаю, в последнее время вы не звонили в техподдержку Apple. Переустановка OSX — довольно безболезненная операция. Все ваши приложения остаются установленными, все ваши пользователи остаются на месте.
Вчера звонил в Apple. 3 часа по телефону. Затем 4-часовая переустановка ОС (через быстрый интернет на SSD). Затем 2 часа настройки файлов конфигурации (apache и т. д.), которые были стерты переустановкой ОС. И после всего этого - МОИ ЧАСЫ ЕЩЕ БУДУТ. Даже близко не безболезненно, и проблема не устранена.