Come posso sapere se il mio Mac aggiorna correttamente l'orologio?


45

Vorrei sapere quali sono le impostazioni predefinite per OS X in termini di mantenimento dell'orologio regolato quando abilito la sincronizzazione automatica dell'ora nelle preferenze Data e ora.

So che il venerabile ntpddemone su Mavericks (10.9) e Yosemite (10.10) non è più responsabile della regolazione del tempo e invece pacemakerè stato introdotto un nuovo programma , quindi come posso sapere se le cose funzionano o necessitano di aggiustamenti per tenere il tempo?

Risposte:


71

10.14 Mojave

Mojave usa ancora timed, ma ntpdatee gli helper ntpqvengono rimossi. Per controllare e aggiornare l'ora del sistema, è possibile chiamare sntpdirettamente.

$ 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";
}

Schermata Xcode del plist menzionato

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:

Fonti temporizzate

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 adjtimeper 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 pacemakercon l' -aopzione, 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' -iopzione:

/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' -vopzione:

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%

Il mio sistema Mojave non si sincronizzava automaticamente, ma sntpfunzionava. Mi chiedo se l' /var/db/ntp-koderrore stia causando problemi con la sincronizzazione automatica: proverò a crearlo e ricontrolleremo tra qualche mese. =)
Ken Williams,

5

Questa risposta si applica solo a 10.12 Sierra e inferiori.

I dettagli possono essere utili come riferimento, ma un'altra risposta copre in modo eccellente i nuovi dettagli di cronometraggio macOS.


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 i valori di ritardo / offset / jitter siano inferiori a 100 (il ritardo potrebbe essere inferiore a 1000 in situazioni normali per sistemi con minore accuratezza temporale), il comando successivo da eseguire nel terminale è ntpqseguito dal timeserver dalle ntpqpreferenze dell'utente e del sistema. Puoi anche testare altri time server per vedere se hanno ritardi inferiori poiché al sistema di cronometraggio piace avere una risposta stretta e veloce dai time server quando si corregge l'ora per differenze di millisecondi e si calcola come l'orologio hardware corrente si stia allontanando dall'ora 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 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

Ciò dimostra che sulla batteria, l'intervallo di regolazione non è più di una volta ogni 10 secondi e si regola ancora meno se l'errore dell'orologio è inferiore a 0,1 millisecondi.

Se scopri che il tuo offset è di secondi o più, potresti voler cambiare i timeserver che usi o forse cambiare i valori usati sul pacemaker per usare più energia e CPU ma avere un orologio più vicino al tempo reale in cambio delle impostazioni che Apple ha spedito con 10.9.


4

Se vai su http://time.gov puoi vedere l'ora ufficiale (fino alla seconda) e usarla per verificare se l'ora di sistema è corretta o meno. Si noti che questa è l'ora NIST ufficiale e fa la propria sincronizzazione nel browser, indipendentemente dall'ora di sistema (ad esempio, puoi vedere qui che time.gov gestisce i secondi bisestili, mentre apparentemente OS X no).


Potresti elaborare in che modo ciò influisce sulla mia scelta di utilizzare "Mantieni l'orologio sincronizzato" Suppongo che questa sia una risposta valida come "controlla il tuo Apple Watch - è preciso fino al secondo".
bmike

1
La domanda è "come posso sapere se il mio Mac sta aggiornando correttamente l'orologio?" Se "guarda l'ora ufficiale" non risponde alla tua domanda, probabilmente dovresti riformularla.
asmeurer,

Per quanto riguarda time.gov, è l' ora NIST ufficiale e fa la sua sincronizzazione nel browser quando visiti la pagina. Dire "controlla un Apple Watch" equivale a dirti che l'orologio di sistema di OS X è già sincronizzato per impostazione predefinita (il che è vero, ma in realtà non risponde alla domanda). Questo è anche molto più economico di un Apple Watch e l'Apple Watch non ha un secondo display digitale AFAIK.
asmeurer,

La mia supposizione era che l'orologio avesse più ingegneria per mantenere il tempo accurato e preciso. Gli orologi Mac sono notoriamente troppo precisi e poco accurati. Lo stesso vale per qualsiasi computer di cui sono a conoscenza: la precisione è difficile per il cronometraggio. +1 per la spiegazione dettagliata delle funzionalità web. (Anche se non è nel corpo della risposta)
bmike

4

A partire da High Sierra il demone di sistema ntpd è stato sostituito con il demone di sistema temporizzato che invoca / usr / libexec / timed.

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

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

L'output risultante è di gran lunga meno dettagliato (= noioso). Ad esempio nessun dettaglio ∂T / deriva.

Apparentemente a tempo utilizza solo un server ntp (il primo elencato - controllato con WireShark / LittleSnitch) anche se ne sono stati inseriti diversi nel file delle preferenze di sistema / ntp.conf.

Ulteriori letture (non molto tecniche): qualcuno ha 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à SIP disabilitata. L'inserimento ntpq -pfunzionerà di nuovo quindi.

Per caricare il demone in modalità abilitata SIP, 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 demone:

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

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


1
Il suggerimento con l'abilitazione di vecchio ntpd non è una buona opzione quando si utilizza High Sierra, perché /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist è disabilitato e "protetto" con SIP. Quindi, se non vuoi caricarlo, devi prima disabilitare SIP. (/ usr / bin / csrutil disable)
Juergen Braendle,

2

Per ottenere una risposta affidabile sull'impostazione dell'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 (il che sarebbe spettacolare, se effettivamente vero, ma il valore ben al di sotto di 100 ms indica una sincronizzazione funzionante).


1

Per verificare la sincronizzazione dell'orologio, simile alla risposta che suggerisce di eseguire ntpdatein modalità debug, è anche possibile eseguirlo 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 è dal mio Mac che esegue High Sierra 10.13.2, che esegue timedanziché il demone NTP ( ntpdatefunziona ancora perché non utilizza il demone NTP).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.