Wie kann ich feststellen, ob mein Mac die Uhr korrekt aktualisiert?


45

Ich möchte wissen, wie die Standardeinstellungen für OS X lauten, wenn die Uhrzeit angepasst werden soll, wenn ich die automatische Zeitsynchronisierung in der Voreinstellung "Datum & Uhrzeit" aktiviere.

Ich weiß, dass der ehrwürdige ntpdDämon auf Mavericks (10.9) und Yosemite (10.10) nicht mehr für die Anpassung der Zeit verantwortlich ist. Stattdessen wurde ein neues Programm pacemakereingeführt. Wie kann ich also wissen, dass die Dinge funktionieren oder eine Anpassung benötigen, um die Zeit zu halten?

Antworten:


71

10.14 Mojave

Mojave benutzt noch timed, aber ntpdateund die Helfer ntpqwerden entfernt. Um Ihre Systemzeit zu überprüfen und zu aktualisieren, können Sie sntpdirekt anrufen .

$ 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

Im Auslieferungszustand fehlt eine Tracking-Datei. Wenn Sie also beim Überprüfen der Uhrzeit diesen harmlosen Fehler erhalten:

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

Ignoriere den Fehler oder erstelle die leere Datei:

sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod

10.13 Hohe Sierra

High Sierra wird timedvom /usr/libexec/timedSystembenutzer ausgeführt _timed.

timed behält die Genauigkeit der Systemuhr bei, indem die Uhr mit Referenzuhren über Technologien wie NTP synchronisiert wird. Eingaben werden innerhalb von timed zusammengeführt, wobei die Unsicherheit berechnet wird, um die Planung proaktiver Zeitaufträge zu erleichtern. timed ist sich auch des Strom- / Batteriezustands bewusst.

timed wird vom LaunchDaemon verwaltet /System/Library/LaunchDaemons/com.apple.timed.plist. zeitgesteuerte Läufe…

  • wenn der Daemon beim Booten geladen wird (RunAtLoad: true)
  • alle 3600 Sekunden (Startintervall: 3600)
  • wenn der Flugzeugmodus deaktiviert ist (com.apple.systemconfiguration Flugzeugmodus geändert: com.apple.radios.plist AirplaneMode false, scheint von iOS übernommen zu werden)

Sie können sehen, wie "aus" Ihre Uhr ist, indem Sie den Inhalt von /var/db/timed/com.apple.timed.plistim TMLastSystemTime-Wörterbuch im TMTimeError-Schlüssel und im TMScaleFactorError-Schlüssel nachsehen.

$ 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 der erwähnten Pliste

timed verwendet den eingestellten Zeitserver /etc/ntp.conf, der standardmäßig eingestellt ist

server time.apple.com

timed verwendet auch TMTimeSynthesizer, etwas, mit dem CoreTime unter iOS die Uhr aktualisiert, mir ist jedoch der Verlauf unter macOS nicht bekannt:

zeitgesteuerte Quellen

Führen Sie die zeitgesteuerte Binärdatei nicht selbst aus, wie in der Manpage beschrieben:

timed benötigt keine Argumente und Benutzer sollten es nicht manuell starten.

Laut dem Apple Developer Forums-Benutzer granada29 im Beitrag ntpd, timed und chronyd in 10.13 , führt timed Folgendes aus:

timed scheint ein einfacher sntp-Client zu sein - dh er fragt das NTP regelmäßig ab (15 Minuten) und verwendet den Systemaufruf settimeofday (), um die Systemuhr einzustellen. Ich nehme an, es ist klug, die Uhr nicht rückwärts zu stellen, aber man kann es nicht sagen.

10.11 El Capitan bis 10.12 Sierra

pacemakerist der Daemon, der die Zeit in macOS verwaltet. Es nutzt adjtimedie Uhr pro den Inhalt anzupassen /var/db/ntp.drift.

Sie können sehen, wie "aus" Ihre Uhr ist, indem Sie den Inhalt von ntp.drift- zum Beispiel meine Datei enthält Folgendes:

-23.640

Dies bedeutet, dass die Uhr -23,64 PPM von der Zeit entfernt ist, die sie sein sollte. Die Einheiten dieser Zahl sind PPM oder Parts Per Million. 1 PPM ist 1 Mikrosekunde / Sekunde oder 3,6 ms / h.

Sie können die Uhr häufiger aktualisieren , indem Sie pacemakerdie -aOption ausführen und eine Zeit in Sekunden angeben, die zwischen den Zeitbewegungen gewartet werden soll:

/usr/libexec/pacemaker -a 10

Öffnen Sie, um die von OS X für Schrittmacher verwendeten Parameter anzuzeigen /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" );
}

Führen Sie die folgenden Schritte aus, um Ihre aktuellen Einstellungen zu ermitteln -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

Sie können das Protokoll anzeigen, indem Sie Folgendes -vausführen:

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%

Mein Mojave-System synchronisierte sich nicht automatisch, sntpfunktionierte aber . Ich frage mich, ob der /var/db/ntp-kodFehler Probleme mit der automatischen Synchronisierung verursacht. Ich werde versuchen, ihn zu erstellen und in einigen Monaten erneut nachzuschlagen. =)
Ken Williams

5

Diese Antwort gilt nur für Sierra 10.12 und niedriger.

Die Details mögen als Referenz hilfreich sein, aber eine andere Antwort deckt die neueren Details der MacOS-Zeitmessung in hervorragender Weise ab.


Der erste Schritt ist, um zu sehen, ob Ihre Zeit eingerichtet ist.

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

Angenommen, Sie haben Verzögerungs- / Offset- / Jitter-Werte von weniger als 100 (die Verzögerung könnte in normalen Situationen für weniger ntpqzeitgenaue kritische Systeme unter 1000 liegen), folgt auf den nächsten im Terminal auszuführenden Befehl der Zeitserver Ihrer ntpqSystempräferenz. Sie können auch andere Zeitserver testen, um festzustellen, ob sie geringere Verzögerungen aufweisen, da das Zeitnehmungssystem von Zeitservern gerne eine schnelle Antwort erhält, wenn die Zeit für Millisekundenunterschiede korrigiert und berechnet wird, wie die aktuelle Hardwareuhr von der Standardzeit abweicht .

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

Als nächstes sollten Sie Ihr Herzschrittmacherprogramm überprüfen:

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

Dies zeigt, dass das Einstellintervall im Akkubetrieb nicht mehr als einmal alle 10 Sekunden und bei einem Taktfehler von weniger als 0,1 Millisekunden noch kürzer ist.

Wenn Sie feststellen, dass Ihr Versatz Sekunden oder mehr beträgt, möchten Sie möglicherweise die verwendeten Zeitserver oder die auf dem Schrittmacher verwendeten Werte ändern, um mehr Energie und CPU zu verbrauchen, aber eine Uhr haben, die näher an der tatsächlichen Zeit ist, als die von Apple vorgenommenen Einstellungen ausgeliefert mit 10.9.


4

Wenn Sie zu http://time.gov gehen, können Sie die offizielle Zeit (bis zur Sekunde) anzeigen und damit überprüfen, ob Ihre Systemzeit korrekt ist oder nicht. Beachten Sie, dass dies die offizielle NIST-Zeit ist und unabhängig von der Systemzeit eine eigene Synchronisierung im Browser durchführt ( hier sehen Sie beispielsweise, dass time.gov Schaltsekunden verarbeitet, während dies in OS X anscheinend nicht der Fall ist).


Könnten Sie näher erläutern, wie sich dies auf meine Entscheidung auswirkt, "Uhr synchron halten" zu verwenden? Dies ist vermutlich eine ebenso gute Antwort wie "Überprüfen Sie Ihre Apple Watch - sie ist sekundengenau."
bmike

1
Die Frage lautet: "Wie kann ich feststellen, ob mein Mac die Uhr ordnungsgemäß aktualisiert?" Wenn "auf die offizielle Zeit schauen" Ihre Frage nicht beantwortet, sollten Sie sie wahrscheinlich umformulieren.
Asmeurer

In Bezug auf time.gov ist es die offizielle NIST-Zeit und führt eine eigene Synchronisierung im Browser durch, wenn Sie die Seite besuchen. Wenn Sie "Apple Watch prüfen" sagen, wird Ihnen lediglich mitgeteilt, dass die Systemuhr von OS X bereits standardmäßig synchronisiert ist (was zwar zutrifft, die Frage jedoch nicht wirklich beantwortet). Dies ist auch viel billiger als eine Apple Watch, und die Apple Watch hat keine digitale Zweitanzeige AFAIK.
Asmeurer

Meine Vermutung war, dass die Uhr mehr Technik hat, um die Zeit genau und präzise zu halten. Mac-Uhren sind bekanntermaßen zu genau und zu ungenau. Das gleiche gilt für jeden Computer, den ich kenne - Genauigkeit ist schwer für die Zeitmessung. +1 für die detaillierte Erklärung der Webfunktionen. (Auch wenn es nicht im Hauptteil der Antwort enthalten ist)
bmike

4

Beginnend mit High Sierra wurde der ntpd-Systemdämon durch den zeitgesteuerten Systemdämon ersetzt, der / usr / libexec / timed aufruft.

Der beste Exec, den ich gefunden habe, um Details zu erhalten, ist systemsetup(als root ausgeführt) mit seinen verschiedenen Flags:

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

Die resultierende Ausgabe ist bei weitem weniger ausführlich (= langweilig). ZB keine ∂T / Drift-Details.

Anscheinend verwendet timed nur einen ntp-Server (der erste wird aufgelistet - mit WireShark / LittleSnitch überprüft), auch wenn mehrere in den Systemeinstellungen / ntp.conf eingetragen sind.

Weitere Lektüre (nicht sehr technisch): Hat jemand die Zeit? Wie High Sierra die Zeitsynchronisation verändert hat


Ein älterer ntpd-Daemon ist noch vorhanden, wurde jedoch entladen. Es kann jedoch durch Eingabe in Terminal.app geladen werden:

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

im SIP-deaktivierten Modus. Die Eingabe ntpq -pwird dann wieder funktionieren.

Um den Daemon im SIP-fähigen Modus zu laden, kopieren Sie die Datei nach / Library / LaunchDaemons /:

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

Ändern Sie die Bezeichnung der Liste mit nano oder einem anderen Editor von org.ntp.ntpd-legacy in org.ntp.ntpd:

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

Laden Sie den Daemon:

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

Wenn ich einen besseren Exec finde, um Zeitdetails mit dem Standard-High-Sierra-Daemon zu erhalten, wird die Antwort aktualisiert.


1
Der Tipp zum Aktivieren von altem ntpd ist bei Verwendung von High Sierra keine gute Option, da /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist deaktiviert und mit SIP "gesichert" ist. Wenn Sie es also nicht laden möchten, müssen Sie zuerst SIP deaktivieren. (/ usr / bin / csrutil disable)
Jürgen Braendle

2

Um eine zuverlässige Antwort darauf zu erhalten, wie gut Ihre Uhr eingestellt ist, führen Sie ntpdate im Debug-Modus aus:

ntpdate -d pool.ntp.org

Dies wird sich für eine Weile drehen und in einer Zeile wie enden

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

In diesem Fall bedeutete dies, dass meine lokale Uhr um ungefähr 810 µs abgestellt war (was spektakulär wäre, wenn es tatsächlich zutrifft, aber der Wert weit unter 100 ms zeigt eine funktionierende Synchronisation an).


1

Um die Uhrzeitsynchronisierung zu überprüfen, können Sie sie, ähnlich wie die Antwort, die vorschlägt, ntpdateim Debug-Modus auszuführen, auch im Abfrage-Modus ausführen, um eine weniger ausführliche Ausgabe zu erhalten.

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

Dies ist von meinem Mac, auf dem High Sierra 10.13.2 ausgeführt wird, timedund nicht der NTP-Dämon ( ntpdatefunktioniert immer noch, weil er den NTP-Dämon nicht verwendet).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.