10.14 Mojave
Mojave benutzt noch timed
, aber ntpdate
und die Helfer ntpq
werden entfernt. Um Ihre Systemzeit zu überprüfen und zu aktualisieren, können Sie sntp
direkt anrufen .
$ 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
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 timed
vom /usr/libexec/timed
Systembenutzer 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.plist
im 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";
}
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:
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
pacemaker
ist der Daemon, der die Zeit in macOS verwaltet. Es nutzt adjtime
die 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 pacemaker
die -a
Option 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 -v
ausfü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%
sntp
funktionierte aber . Ich frage mich, ob der/var/db/ntp-kod
Fehler Probleme mit der automatischen Synchronisierung verursacht. Ich werde versuchen, ihn zu erstellen und in einigen Monaten erneut nachzuschlagen. =)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.
Angenommen, Sie haben Verzögerungs- / Offset- / Jitter-Werte von weniger als 100 (die Verzögerung könnte in normalen Situationen für weniger
ntpq
zeitgenaue kritische Systeme unter 1000 liegen), folgt auf den nächsten im Terminal auszuführenden Befehl der Zeitserver Ihrerntpq
Systemprä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 .Als nächstes sollten Sie Ihr Herzschrittmacherprogramm überprüfen:
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.
quelle
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).
quelle
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: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:
im SIP-deaktivierten Modus. Die Eingabe
ntpq -p
wird dann wieder funktionieren.Um den Daemon im SIP-fähigen Modus zu laden, kopieren Sie die Datei nach / Library / LaunchDaemons /:
Ändern Sie die Bezeichnung der Liste mit nano oder einem anderen Editor von org.ntp.ntpd-legacy in org.ntp.ntpd:
Laden Sie den Daemon:
Wenn ich einen besseren Exec finde, um Zeitdetails mit dem Standard-High-Sierra-Daemon zu erhalten, wird die Antwort aktualisiert.
quelle
Um eine zuverlässige Antwort darauf zu erhalten, wie gut Ihre Uhr eingestellt ist, führen Sie ntpdate im Debug-Modus aus:
Dies wird sich für eine Weile drehen und in einer Zeile wie enden
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).
quelle
Um die Uhrzeitsynchronisierung zu überprüfen, können Sie sie, ähnlich wie die Antwort, die vorschlägt,
ntpdate
im Debug-Modus auszuführen, auch im Abfrage-Modus ausführen, um eine weniger ausführliche Ausgabe zu erhalten.Dies ist von meinem Mac, auf dem High Sierra 10.13.2 ausgeführt wird,
timed
und nicht der NTP-Dämon (ntpdate
funktioniert immer noch, weil er den NTP-Dämon nicht verwendet).quelle