10.14 Мохаве
Мохаве все еще использует timed
, но ntpdate
и помощники ntpq
удалены. Чтобы проверить и обновить системное время, вы можете позвонить sntp
напрямую.
$ sudo sntp -sS pool.ntp.org
Password:
sntp 4.2.8p10@1.3728-o Tue Mar 21 14:36:42 UTC 2017 (136.200.1~2533)
2018-09-29 19:42:41.448103 (-0200) +1087.742403 +/- 725.183462 pool.ntp.org 188.68.36.203 s2 no-leap
Из коробки отсутствует файл отслеживания, поэтому, если вы получаете эту безобидную ошибку при проверке времени:
kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory
либо проигнорируйте ошибку, либо попробуйте создать этот пустой файл:
sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod
10.13 Высокая Сьерра
High Sierra использует timed
, от /usr/libexec/timed
пользователя системы _timed
.
Timed поддерживает точность системных часов, синхронизируя часы с эталонными часами с помощью таких технологий, как NTP. Входы объединяются в timed, где он вычисляет неопределенность, чтобы упростить планирование активных временных заданий. Timed также знает о состоянии питания / батареи.
время управляется LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist
. по времени бежит ...
- когда демон загружается при загрузке (RunAtLoad: true)
- каждые 3600 секунд (StartInterval: 3600)
- когда режим полета отключен (com.apple.systemconfiguration изменен режим полета самолета: com.apple.radios.plist Значение false параметра AirplaneMode, которое, как представляется, переносится из iOS)
Вы можете увидеть, как «выключены» ваши часы, посмотрев на содержимое /var/db/timed/com.apple.timed.plist
словаря TMLastSystemTime в ключе TMTimeError и ключе TMScaleFactorError.
$ sudo defaults read /var/db/timed/com.apple.timed TMLastSystemTime
{
TMCurrentTime = "537303485.281592";
TMReliability = 1;
TMRtcTime = "351422.381868388";
TMScaleFactor = "0.9999958233107684";
TMScaleFactorError = "3.468751755688052e-05";
TMSource = TMTimeSynthesizer;
TMTimeError = "0.6127951619022057";
}
timed использует установленный сервер времени /etc/ntp.conf
, который по умолчанию
server time.apple.com
timed также использует TMTimeSynthesizer, который CoreTime на iOS использует для обновления часов, но я не знаю его истории на macOS:
Не запускайте синхронизируемый двоичный файл самостоятельно, как упомянуто на странице руководства:
timed не принимает аргументов, и пользователи не должны запускать его вручную.
Согласно сообщению пользователя Apple Developer Forums granada29 в посте ntpd, timed и chronyd в 10.13 , timed выполняет следующее:
timed выглядит как простой sntp-клиент - т.е. он периодически опрашивает NTP (15 минут) и использует системный вызов settimeofday () для установки часов системы. Я предполагаю, что у этого есть некоторый ум, чтобы избежать перевести часы назад, но нет никакого способа сказать.
10,11 Эль-Капитан до 10,12 Сьерра
pacemaker
это демон, отвечающий за управление временем в macOS. Он использует adjtime
для настройки часов в соответствии с содержанием /var/db/ntp.drift
.
Вы можете увидеть, насколько «выключены» ваши часы, посмотрев на содержимое ntp.drift
- например, мой файл содержит следующее:
-23.640
Это означает, что часы находятся на -23,64 PPM от времени, которое они должны быть. Единицами этого числа являются ППМ или Части на миллион. 1 стр. / Мин составляет 1 мкс / с или 3,6 мс / ч.
Вы можете сделать обновление тактового чаще работает pacemaker
с -a
опцией, обеспечивая время в секундах ожидание между движениями времени:
/usr/libexec/pacemaker -a 10
Чтобы увидеть параметры, используемые OS X для кардиостимулятора, откройте /System/Library/LaunchDaemons/com.apple.pacemaker.plist
.
{
KeepAlive = { PathState = { "/private/var/db/ntp.drift" = :true; }; };
Label = "com.apple.pacemaker";
ProgramArguments = ( "/usr/libexec/pacemaker", "-b", "-e", "0.0001", "-a", "10" );
}
Чтобы найти текущие настройки, запустите с -i
параметром:
/usr/libexec/pacemaker -i
Jan 19 18:20:08 g pacemaker[12544] <Info>: --- settings for external power ---
Jan 19 18:20:08 g pacemaker[12544] <Info>: interval = 1 seconds, tolerance = 0.000000, drift = -23.640000
Jan 19 18:20:08 g pacemaker[12544] <Info>: --- settings for internal power ---
Jan 19 18:20:08 g pacemaker[12544] <Info>: interval = 1 seconds, tolerance = 0.000024, drift = -23.640000
Вы можете показать журнал, запустив с -v
опцией:
sudo /usr/libexec/pacemaker -v
Password:
Jan 19 18:23:17 g pacemaker[13202] <Info>: power status check: using external power
Jan 19 18:23:17 g pacemaker[13202] <Info>: created file monitor for /var/db/ntp.drift
Jan 19 18:23:17 g pacemaker[13202] <Info>: interval = 1 seconds, tolerance = 0.000000, drift = -23.640000
Jan 19 18:23:19 g pacemaker[13202] <Debug>: drift -23.640000 residue 0.000000 delta -23
Jan 19 18:23:20 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.640000 delta -24
Jan 19 18:23:21 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.280000 delta -23
Jan 19 18:23:22 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.920000 delta -24
Jan 19 18:23:23 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.560000 delta -24
Jan 19 18:23:24 g pacemaker[13202] <Debug>: drift -23.640000 residue -0.200000 delta -23
⌃C%
sntp
работала. Интересно,/var/db/ntp-kod
не вызывает ли ошибка проблемы с автоматической синхронизацией - попробую создать ее и проверить через несколько месяцев. =)Этот ответ относится только к 10.12 Сьерра и ниже.
Подробности могут быть полезны для справки, но другой ответ превосходно описывает новые детали хронометража macOS.
Первый шаг - посмотреть, настроено ли ваше время.
Предполагая, что у вас есть значения задержки / смещения / дрожания меньше 100 (задержка может быть меньше 1000 в обычных ситуациях для систем с меньшей точностью по времени), следующая команда для запуска в терминале
ntpq
сопровождается сервером времени из вашейntpq
и системных настроек. Вы также можете протестировать другие серверы времени, чтобы увидеть, имеют ли они меньшие задержки, поскольку система хронометража предпочитает иметь быстрый и быстрый ответ от серверов времени при корректировке времени для различий в миллисекундах и вычислении отклонения текущих аппаратных часов от стандартного времени. ,Следующее, что нужно проверить, это ваша программа кардиостимулятора:
Это показывает, что на батарее интервал регулировки составляет не более одного раза в 10 секунд, а регулировка еще меньше, если ошибка синхронизации составляет менее 0,1 миллисекунды.
Если вы обнаружите, что ваше смещение составляет секунды или более, вы можете изменить используемые вами серверы времени или, возможно, изменить значения, используемые в кардиостимуляторе, чтобы использовать больше энергии и ЦП, но иметь часы ближе к истинному времени в обмен на настройки, которые есть у Apple. поставляется с 10,9.
источник
Если вы зайдете на http://time.gov, вы сможете увидеть официальное время (с точностью до секунды) и использовать его для проверки правильности системного времени. Обратите внимание, что это официальное время NIST, и оно выполняет свою собственную синхронизацию в браузере, независимо от системного времени (в качестве примера вы можете увидеть здесь, что time.gov обрабатывает дополнительные секунды, тогда как OS X, по-видимому, этого не делает).
источник
Начиная с High Sierra, системный демон ntpd был заменен системным демоном timed, который вызывает / usr / libexec / timed.
Лучший исполнитель, который я нашел для получения подробностей - это
systemsetup
(запуск от имени root) с его различными флагами:Результирующий вывод гораздо менее многословен (= скучен). Например, нет ∂T / детали дрейфа.
По-видимому, timed использует только один ntp-сервер (первый из перечисленных - проверено с помощью WireShark / LittleSnitch), даже если несколько из них введены в системный файл настроек / ntp.conf.
Дальнейшее чтение (не очень техническое): У кого-нибудь есть время? Как High Sierra изменила синхронизацию времени
Устаревший демон ntpd все еще присутствует, но не загружен. Его можно загрузить, введя в Terminal.app:
в режиме SIP отключен. Ввод
ntpq -p
будет работать снова тогда.Чтобы загрузить демон в режиме SIP, скопируйте файл в / Library / LaunchDaemons /:
Измените метку plist с помощью nano или другого редактора из org.ntp.ntpd-legacy в org.ntp.ntpd:
Загрузите демон:
Если я найду лучшего исполнителя для получения подробной информации о времени с демоном High Sierra по умолчанию, ответ будет обновлен.
источник
Чтобы получить надежный ответ о том, насколько хорошо установлены ваши часы, запустите ntpdate в режиме отладки:
Это будет вращаться некоторое время и закончится такой линией, как
В этом случае это означало, что мои локальные часы были выключены примерно на 810 мкс (что было бы впечатляющим, если на самом деле верно, но значение значительно ниже 100 мс действительно указывает на рабочую синхронизацию).
источник
Чтобы проверить синхронизацию часов, аналогично ответу, который предлагает работать
ntpdate
в режиме отладки, вы также можете запустить его в режиме запросов для получения менее подробного вывода.Это с моего Mac под управлением High Sierra 10.13.2, который работает
timed
вместо демона NTP (ntpdate
все еще работает, потому что он не использует демон NTP).источник