Як я можу дізнатися, чи мій Mac належним чином оновлює годинник?


26

Я хотів би знати, які параметри за умовчанням для OS X стосуються збереження налаштованого годинника, коли я ввімкну автоматичну синхронізацію часу у програмі Date & amp; Перевага часу.

Я знаю, що поважний ntpd демон на Mavericks (10.9) і Йосеміті (10.10) більше не відповідає за налаштування часу і замість нової програми pacemaker було введено - так як я можу знати, що речі працюють або потребують коригування, щоб зберегти час?

Відповіді:


40

10.14 Мохаве

Мохаве все ще використовує timed, але ntpdate видалено. Щоб перевірити та оновити системний час, можна зателефонувати 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 Висока Сьєрра

Висока Sierra використовує timed, від /usr/libexec/timed, запускається користувачем системи _timed.

timed підтримує точність системного годинника, синхронізуючи годинник з еталонними годинниками через технології, такі як NTP. Вхідні дані об'єднуються всередині часового інтервалу, де він обчислює невизначеність для полегшення планування проактивних завдань часу. приурочений також знає умови живлення / акумулятора.

тимчасовим керує LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist. час виконання ...

  • коли демон завантажується під час завантаження (RunAtLoad: true)
  • кожні 3600 секунд (StartInterval: 3600)
  • коли режим літака вимкнено (режим com.apple.systemconfiguration змінено: com.apple.radios.plist AirplaneMode false, який, як видається, переноситься з 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";
}

Xcode screenshot of mentioned plist

приурочений час використовується сервер часу /etc/ntp.conf, яка за замовчуванням є

server time.apple.com

timed також використовує TMTimeSynthesizer, те, що CoreTime на iOS використовує для оновлення годинника, але я не знаю його історії на MacOS:

timed Sources

Не запускайте самостійно, як зазначено на сторінці man:

timed не приймає аргументів, і користувачі не повинні запускати його вручну.

За інформацією Apple Developer Forums користувач granada29 в пості ntpd, timed і chronyd в 10.13 , приурочена виконує наступне:

приурочений, здається, простий клієнт sntp - тобто періодично опитує NTP (15 хвилин) і використовує системний виклик settimeofday () для встановлення системного годинника. Я припускаю, що він має певну розумність, щоб уникнути переходу на годинник назад, але немає ніякого способу розповісти.

10.11 El Capitan до 10.12 Sierra

pacemaker це демон, відповідальний за керування часом у macOS. Він використовує adjtime налаштувати годинник на вміст /var/db/ntp.drift.

Ви можете побачити, як "вимкнено" ваш годинник, дивлячись на вміст ntp.drift - наприклад, мій файл містить наступне:

-23.640

Це означає, що годинник -23.64 PPM від часу, який він повинен бути. Одиницями цього числа є PPM або частки на мільйон. 1 PPM - 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%

[корекція?] Я вважаю, що файл дрейфу містить помилку в PPM тактової частоти, а не часу.

кардіостимулятор все ще повинен перевірити сервер дрейфу wrt ntp (s) десь. Згідно зі стартовою сторінкою кардіостимулятора Apple, вона "зазвичай" використовує ntpd для обчислення дрейфу. Отже, я припускаю, що додадуть щонайменше ще два серверу часу в один типовий сервер /etc/ntp.conf. (Один з них є єдиною точкою відмови, два отримують плутанину ntpd; три або більше дозволяють ntpd зробити краще рішення.)
iainH

5

Перший крок полягає в тому, щоб побачити, чи налаштований ваш час.

Mac:~ me$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*time.apple.com  17.168.198.149   2 u 1046  512   37   58.475    9.477   3.674

Припускаючи, що значення затримки / зсуву / джиттера менше 100 (за нормальних ситуацій затримка може бути меншою за 1000 для менш точних критичних систем), наступна команда для запуску в терміналі: ntpq слід сервер часу від вашого ntpq і системні переваги. Ви також можете перевірити інші сервери часу, щоб дізнатися, чи мають вони менші затримки, оскільки система обліку часу любить мати близьку, швидку відповідь від серверів часу при корекції часу для мілісекундних відмінностей і розрахунку того, як поточний апаратний годинник відходить від стандартного часу .

Mac:~ me$ ntpdate -q time.apple.com
server 17.151.16.12, stratum 2, offset 0.081698, delay 0.11237
server 17.151.16.20, stratum 2, offset 0.081365, delay 0.11310
server 17.151.16.21, stratum 2, offset 0.082754, delay 0.11440
server 17.151.16.22, stratum 2, offset 0.081750, delay 0.11264
server 17.151.16.23, stratum 2, offset 0.082691, delay 0.11415
server 17.151.16.38, stratum 2, offset 0.082077, delay 0.11458
server 17.171.4.13, stratum 2, offset 0.084822, delay 0.08054
server 17.171.4.14, stratum 2, offset 0.083749, delay 0.08142
server 17.171.4.15, stratum 2, offset 0.086343, delay 0.07605
server 17.171.4.33, stratum 2, offset 0.086526, delay 0.07690
server 17.171.4.34, stratum 2, offset 0.084500, delay 0.07997
server 17.171.4.35, stratum 2, offset 0.083987, delay 0.08278
server 17.171.4.36, stratum 2, offset 0.084382, delay 0.08028
server 17.171.4.37, stratum 2, offset 0.085948, delay 0.07831
server 17.151.16.14, stratum 2, offset 0.082043, delay 0.11270
19 Jan 12:09:32 ntpdate[4592]: adjust time server 17.171.4.15 offset 0.086343 sec
Mac:~ me$ ntpq
ntpq> assoc

ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 57788  9014   yes   yes  none    reject   reachable  1
ntpq> peer
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 time.apple.com  17.168.198.148   2 u  729  512    1  133.274   51.653 371.362
ntpq> q

Наступне, що потрібно перевірити - це ваша програма кардіостимулятора:

Mac:~ me$ ps -ef|grep [p]acemaker
0    76     1   0 Fri08AM ??         0:03.64 /usr/libexec/pacemaker -b -e 0.0001 -a 10

Це показує, що на батареї інтервал налаштування не перевищує один раз кожні 10 секунд і регулюється ще менше, якщо помилка тактового сигналу менше 0,1 мілісекунд.

Якщо ви виявите, що ваше зміщення становить секунди або більше, ви можете змінити таймери, які ви використовуєте, або, можливо, змінити значення, які використовуються на кардіостимуляторі, щоб використовувати більше енергії та процесора, але мають годинник ближче до справжнього часу в обмін на налаштування Apple поставляється з 10.9.


3

Якщо ви йдете http://time.gov Ви можете побачити офіційний час (до другого) і використати його для перевірки правильності системного часу. Зверніть увагу, що це офіційне час NIST, і робить свою власну синхронізацію в браузері, незалежно від системного часу (як приклад, ви можете побачити тут що time.gov ручки стрибок секунд, в той час як OS X, мабуть, не робить).


Не могли б Ви пояснити, як це впливає на мій вибір, щоб використовувати "синхронізувати годинник" Я вважаю, що це так добре, як "перевірити Apple Watch - це точно до другого".
bmike

1
Питання полягає в тому, "як я можу дізнатися, чи мій Mac належним чином оновлює мої годинники?" Якщо "дивитися на офіційний час" не відповідає на ваше запитання, ви, мабуть, перефразувати його.
asmeurer

Що стосується time.gov, це офіційний NIST час, і робить свою власну синхронізацію в браузері, коли ви відвідуєте сторінку. Кажучи "перевірте Apple Watch", це буде те ж саме, що просто сказати вам, що ваш системний годинник OS X вже синхронізований за замовчуванням (це правда, але насправді не відповідає на питання). Це також набагато дешевше, ніж Apple Watch, і Apple Watch не має цифрового другого дисплея AFAIK.
asmeurer

Мої припущення були годинник має більше техніки, щоб тримати час як точний і точний. Годинники Mac відомі за точністю та точністю. Те ж саме стосується будь-якого комп'ютера, якого я знаю - точність важка для обліку часу. +1 для детального пояснення веб-функцій. (Навіть якщо це не в тілі відповіді)
bmike

3

Починаючи з High Sierra, системний демон ntpd був замінений тимчасовим системним демоном, який викликає / usr / libexec / timed.

Найкращий виконавець, який я знайшов, щоб отримати деталі systemsetup (запуск від імені користувача root) з різними прапорами:

[-getusingnetworktime] [-setusingnetworktime on | off]
[-getnetworktimeserver] [-setnetworktimeserver timeserver]

Отриманий результат є набагато менш деталізованим (= нудним). Немає /T / дрейфують деталі.

Мабуть приурочений використовує тільки один ntp-сервер (перший перерахований - перевірений за допомогою WireShark / LittleSnitch), навіть якщо декілька вводяться у файлі системних параметрів / ntp.conf.

Подальше читання (не дуже технічне): Хто-небудь отримав час? Як висока Sierra змінила час синхронізації


Останній демон ntpd все ще присутній, але вивантажений. Вона може бути завантажена, хоч введенням у Terminal.app:

sudo launchctl load [-F|-w] /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist

у режимі вимкнення SIP. Вхід ntpq -p тоді знову буде працювати.

Щоб завантажити демон в режим SIP, скопіюйте файл до / Library / LaunchDaemons /:

sudo cp /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist /Library/LaunchDaemons/org.ntp.ntpd.plist

Змініть мітку plist з nano або іншим редактором з org.ntp.ntpd-legacy на org.ntp.ntpd:

sudo nano /Library/LaunchDaemons/org.ntp.ntpd.plist

Завантажити демон:

sudo launchctl load -w /Library/LaunchDaemons/org.ntp.ntpd.plist

Якщо я знайду кращу версію для отримання деталей часу з демоном High Sierra за замовчуванням, відповідь буде оновлена.


1
Підказка з увімкненням старого ntpd не є хорошим варіантом при використанні High Sierra, оскільки /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist вимкнено і "захищено" SIP. Отже, якщо ви хочете завантажити його, ви повинні спочатку вимкнути SIP. (/ usr / bin / csrutil вимкнути)
Juergen Braendle

0

Щоб отримати надійну відповідь про те, наскільки добре налаштовано ваш годинник, запустіть ntpdate в режимі налагодження:

ntpdate -d pool.ntp.org

Це буде обертатися на деякий час і закінчиться в рядку, наприклад

 1 Apr 17:38:16 ntpdate[4711]: adjust time server 123.45.67.89 offset 0.000810 sec

У цьому випадку, це означало, що мої місцеві годинники вимкнено приблизно на 810 мкс (що було б вражаючим, якщо насправді вірно, але значення нижче 100 мс означає робочу синхронізацію).


0

Щоб перевірити синхронізацію, подібно до відповіді, яка пропонує запустити ntpdate в режимі налагодження, ви також можете запустити його в режимі запиту для менш вичерпного виводу.

$ ntpdate -q pool.ntp.org
server 85.199.214.102, stratum 1, offset 0.006256, delay 0.05470
server 95.215.175.2, stratum 3, offset 0.005234, delay 0.05624
server 217.114.59.3, stratum 2, offset 0.007166, delay 0.06274
server 85.199.214.100, stratum 1, offset 0.006319, delay 0.05396
22 Jun 09:20:55 ntpdate[84112]: adjust time server 85.199.214.100 offset 0.006319 sec
$

Це з мого Mac працює High Sierra 10.13.2, який працює timed замість демона NTP ( ntpdate все ще працює, оскільки не використовує демон NTP).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.