Come posso sapere se il mio Mac sta mantenendo l'orologio aggiornato correttamente?

26

Vorrei sapere quali sono le impostazioni predefinite per OS X in termini di mantenimento del clock quando abilito la sincronizzazione automatica dell'ora in Date & Preferenza temporale.

So che il venerabile demone ntpd su Mavericks (10.9) e Yosemite (10.10) non è più responsabile della regolazione del tempo e invece è stato introdotto un nuovo programma pacemaker - quindi come posso sapere che le cose sono lavoro o necessità di aggiustamenti per mantenere il tempo?

    
posta bmike 19.01.2014 - 19:01
fonte

6 risposte

40

10.14 Mojave

Mojave usa ancora timed , ma ntpdate è stato rimosso. Per controllare e aggiornare l'orario di sistema, puoi chiamare sntp direttamente.

$ sudo sntp -sS pool.ntp.org
Password:
sntp [email protected] 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

Se ricevi questo errore:

kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory

Prova:

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 , eseguito dall'utente di sistema _timed .

timed maintains system clock accuracy by synchronizing the clock with reference clocks via technologies like NTP. Inputs are merged inside of timed, where it calculates uncertainty to facilitate scheduling proactive time jobs. timed is also aware of power/battery conditions.

timed è gestito da LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist . corse a tempo ...

  • quando il daemon viene caricato all'avvio (RunAtLoad: true)
  • ogni 3600 secondi (StartInterval: 3600)
  • quando la Modalità aereo è disabilitata (modalità aereo com.apple.systemconfiguration modificata: com.apple.radios.plist AirplaneMode false, che sembra essere trasferita da iOS)

Puoi vedere quanto è spento il tuo 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";
}

cronometrato usa il time server impostato in /etc/ntp.conf , che di default è

server time.apple.com

timed usa anche TMTimeSynthesizer, qualcosa che CoreTime su iOS usa per aggiornare l'orologio ma non conosco la sua cronologia su macOS:

Non eseguire il binario a tempo, come indicato nella pagina man:

timed takes no arguments, and users should not launch it manually.

Secondo granada29 utente Forum degli sviluppatori Apple nel post ntpd, cronometrato e chronyd in 10.13 , cronometrato esegue il seguenti:

timed appears to be a simple sntp client - i.e. it polls the NTP periodically (15 minutes) and uses the settimeofday() system call to set the sytem clock. I assume it has some cleverness to avoid stepping the clock backwards but there is no way to tell.

10.11 El Capitan a 10.12 Sierra

pacemaker è il daemon responsabile della gestione del tempo in macOS. Usa adjtime per regolare l'orologio per il contenuto di /var/db/ntp.drift .

Puoi vedere come "spegni" il tuo orologio osservando il contenuto di ntp.drift - ad esempio, il mio file contiene quanto segue:

-23.640

Ciò significa che l'orologio è -23,64 PPM lontano 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.

Puoi aggiornare più spesso l'orologio eseguendo pacemaker con l'opzione -a , fornendo un tempo in secondi di attesa tra i movimenti temporali:

/usr/libexec/pacemaker -a 10

Per visualizzare i parametri utilizzati da OS X per il pacemaker, apri /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'opzione -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

Puoi mostrare il registro eseguendo con l'opzione -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%
    
risposta data 19.01.2014 - 19:15
fonte
5

Il primo passo è vedere se il tuo tempo è impostato.

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

Supponendo che tu abbia valori di delay / offset / jitter inferiori a 100 (il ritardo potrebbe essere inferiore a 1000 in situazioni normali per sistemi meno accurati nel tempo), il comando successivo da eseguire nel terminale è ntpq seguito dal timeserver dal tuo ntpq e dalle preferenze di sistema. È anche possibile testare altri server di tempo per vedere se hanno ritardi inferiori poiché il sistema di cronometraggio gradisce avere una risposta rapida e vicina dai server di tempo quando corregge il tempo per le differenze di millisecondo e calcola il modo in cui l'orologio hardware attuale si allontana dal tempo standard .

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

La prossima cosa da controllare è il tuo programma di pacemaker:

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

Questo indica che a batteria, l'intervallo di regolazione non è più di una volta ogni 10 secondi e si regola ancora meno se l'errore di clock è inferiore a 0,1 millisecondi.

Se ritieni che il tuo offset sia secondi o più, potresti voler cambiare il timeserver che usi o forse cambiare i valori usati su pacemaker per usare più energia e CPU ma avere un orologio più vicino al tempo reale in cambio della impostazioni fornite da Apple con 10.9.

risposta data 19.01.2014 - 19:26
fonte
3

Se vai al link puoi vedere l'orario ufficiale (fino al secondo) e usarlo per verificare se il tuo orario di sistema è corretto o non. Nota che questa è l'ora ufficiale del NIST e fa la propria sincronizzazione nel browser, indipendentemente dall'ora del sistema (ad esempio, puoi vedere qui che time.gov gestisce i secondi bisestili, mentre apparentemente OS X non lo fa).

    
risposta data 06.09.2015 - 20:24
fonte
3

A partire da High Sierra il daemon del sistema ntpd è stato sostituito con il demone di sistema temporizzato che richiama / usr / libexec / cronometrato.

Il miglior exec che ho trovato per ottenere i dettagli è systemsetup (eseguito come root) con i suoi vari flag:

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

L'output risultante è di gran lunga meno prolisso (= noioso). E.g no ∂T / drift details.

Apparentemente cronometrato usa solo un ntp-server (il primo elencato - verificato con WireShark / LittleSnitch) anche se ne sono inseriti diversi nel file preferenze di sistema / ntp.conf.

Approfondimenti (non molto tecnici): Qualcuno ha avuto il tempo? Come High Sierra ha cambiato la sincronizzazione dell'ora

Un demone ntpd legacy è ancora presente ma scaricato. Può essere caricato inserendo in Terminal.app:

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

in modalità disabilitata SIP. Inserendo ntpq -p funzionerà di nuovo allora.

Per caricare il demone in modalità SIP abilitata copia il file in / Library / LaunchDaemons /:

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

Modifica l'etichetta del plist con nano o un altro editor da org.ntp.ntpd-legacy a org.ntp.ntpd:

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

Carica il daemon:

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

Se trovo un exec migliore per ottenere i dettagli del tempo con il demone High Sierra predefinito, la risposta verrà aggiornata.

    
risposta data 10.01.2018 - 20:01
fonte
0

Per ottenere una risposta affidabile su come è impostato il tuo orologio, esegui ntpdate in modalità debug:

ntpdate -d pool.ntp.org

Questo girerà per un po 'e finirà in una linea come

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

In questo caso, ciò significava che il mio orologio locale era spento di circa 810 μs (che sarebbe spettacolare, se fosse effettivamente vero, ma il valore ben al di sotto di 100 ms indica una sincronizzazione funzionante).

    
risposta data 04.04.2018 - 18:15
fonte
0

Per controllare la sincronizzazione dell'orologio, simile alla risposta che suggerisce di eseguire ntpdate in modalità debug, puoi anche eseguirla in modalità Query per un output meno dettagliato.

$ 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
$

Questo viene dal mio Mac con High Sierra 10.13.2, che esegue timed piuttosto che il daemon NTP ( ntpdate funziona ancora perché non usa il daemon NTP).

    
risposta data 22.06.2018 - 10:27
fonte

Leggi altre domande sui tag