10.14 Mojave
Mojave usa ancora timed
, ma ntpdate
e gli helper ntpq
vengono rimossi. Per controllare e aggiornare l'ora del sistema, è possibile chiamare sntp
direttamente.
$ 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
Immediatamente, manca un file di tracciamento, quindi se si ottiene questo errore innocuo durante il controllo del tempo:
kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory
ignorare l'errore o provare a creare quel file vuoto:
sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod
10.13 High Sierra
High Sierra utilizza timed
, da /usr/libexec/timed
, gestito dall'utente di sistema _timed
.
timed mantiene la precisione dell'orologio di sistema sincronizzando l'orologio con gli orologi di riferimento tramite tecnologie come NTP. Gli input vengono uniti all'interno del tempo, dove calcola l'incertezza per facilitare la pianificazione di lavori a tempo proattivo. cronometrato è anche a conoscenza delle condizioni di alimentazione / batteria.
timed è gestito da LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist
. piste a tempo ...
- quando il daemon viene caricato all'avvio (RunAtLoad: true)
- ogni 3600 secondi (StartInterval: 3600)
- quando Modalità aereo è disabilitata (modalità aereo com.apple.systemconfiguration modificata: com.apple.radios.plist Modalità aereo false, che sembra essere riportato da iOS)
Puoi vedere quanto è "spento" l'orologio guardando il contenuto di /var/db/timed/com.apple.timed.plist
, nel dizionario TMLastSystemTime nella chiave TMTimeError e nella chiave 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 utilizza il time server impostato /etc/ntp.conf
, che per impostazione predefinita è
server time.apple.com
timed usa anche TMTimeSynthesizer, qualcosa che CoreTime su iOS usa per aggiornare l'orologio ma non sono a conoscenza della sua storia su macOS:
Non eseguire tu stesso il binario temporizzato, come menzionato nella pagina man:
timed non accetta argomenti e gli utenti non devono avviarlo manualmente.
Secondo l'utente granada29 dei forum degli sviluppatori Apple nel post ntpd, cronometrato e chronyd nella 10.13 , cronometrato esegue le seguenti operazioni:
timed sembra essere un semplice client sntp, ovvero esegue periodicamente il polling dell'NTP (15 minuti) e utilizza la chiamata di sistema settimeofday () per impostare l'orologio di sistema. Presumo che abbia un po 'di intelligenza per evitare di far retrocedere l'orologio ma non c'è modo di dirlo.
10.11 El Capitan a 10.12 Sierra
pacemaker
è il demone responsabile della gestione dell'ora in macOS. Usa adjtime
per regolare l'orologio in base al contenuto di /var/db/ntp.drift
.
Puoi vedere quanto è "spento" l'orologio guardando il contenuto di ntp.drift
- ad esempio, il mio file contiene quanto segue:
-23.640
Ciò significa che l'orologio è -23.64 PPM di distanza dal tempo che dovrebbe essere. Le unità di questo numero sono PPM o Parti per milione. 1 PPM è 1 microsecondo / secondo, o 3,6 ms / h.
È possibile effettuare l'aggiornamento dell'orologio più spesso eseguendo pacemaker
con l' -a
opzione, fornendo un tempo in secondi per attendere tra i movimenti del tempo:
/usr/libexec/pacemaker -a 10
Per visualizzare i parametri utilizzati da OS X per pacemaker, aprire /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" );
}
Per trovare le tue impostazioni correnti, esegui con l' -i
opzione:
/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
È possibile mostrare il registro eseguendo con l' -v
opzione:
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
funzionava. Mi chiedo se l'/var/db/ntp-kod
errore stia causando problemi con la sincronizzazione automatica: proverò a crearlo e ricontrolleremo tra qualche mese. =)