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";
}
приурочений час використовується сервер часу /etc/ntp.conf
, яка за замовчуванням є
server time.apple.com
timed також використовує TMTimeSynthesizer, те, що CoreTime на iOS використовує для оновлення годинника, але я не знаю його історії на MacOS:
Не запускайте самостійно, як зазначено на сторінці 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%