10.14 Mojave
Mojave nadal korzysta timed
, ale ntpdate
pomocnicy ntpq
zostali usunięci. Aby sprawdzić i zaktualizować czas systemowy, możesz zadzwonić sntp
bezpośrednio.
$ 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
Po wyjęciu z pudełka brakuje pliku śledzenia, więc jeśli pojawi się ten nieszkodliwy błąd podczas sprawdzania czasu:
kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory
zignoruj błąd lub spróbuj utworzyć ten pusty plik:
sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod
10.13 High Sierra
High Sierra korzysta timed
z /usr/libexec/timed
, prowadzonego przez użytkownika systemu _timed
.
timed utrzymuje dokładność zegara systemowego poprzez synchronizację zegara z zegarami odniesienia za pomocą technologii takich jak NTP. Dane wejściowe są scalane w ramach czasowych, gdzie oblicza niepewność, aby ułatwić planowanie zadań w czasie proaktywnym. timed jest również świadomy stanu zasilania / akumulatora.
timed jest zarządzany przez LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist
. biegi czasowe…
- gdy demon jest ładowany podczas rozruchu (RunAtLoad: true)
- co 3600 sekund (StartInterval: 3600)
- gdy Tryb samolotowy jest wyłączony (zmieniono tryb samolotowy konfiguracji com.apple.system: com.apple.radios.plist Tryb samolotowy false, który wydaje się być przeniesiony z iOS)
Możesz zobaczyć, jak „wyłączony” jest Twój zegar, patrząc na zawartość /var/db/timed/com.apple.timed.plist
słownika TMLastSystemTime w kluczu TMTimeError i kluczu 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 korzysta z ustawionego serwera czasu /etc/ntp.conf
, którym jest domyślnie
server time.apple.com
timed używa również TMTimeSynthesizer, czegoś, co CoreTime na iOS używa do aktualizacji zegara, ale nie jestem świadomy jego historii na macOS:
Nie uruchamiaj binarnego timera sam, jak wspomniano na stronie podręcznika:
timed nie przyjmuje żadnych argumentów, a użytkownicy nie powinni uruchamiać go ręcznie.
Według użytkowników forów programistów Apple granada29 w poście ntpd, chronometraż i chronyd w 10.13 , timed wykonuje następujące czynności:
timed wydaje się być prostym klientem sntp - tj. okresowo sonduje NTP (15 minut) i używa wywołania systemowego settimeofday () do ustawienia zegara systemowego. Zakładam, że jest trochę sprytny, aby uniknąć cofania zegara do tyłu, ale nie ma sposobu, aby powiedzieć.
10.11 El Capitan do 10.12 Sierra
pacemaker
jest demonem odpowiedzialnym za zarządzanie czasem w macOS. Służy adjtime
do dostosowania zegara do zawartości /var/db/ntp.drift
.
Możesz zobaczyć, jak „wyłączony” jest Twój zegar, patrząc na zawartość ntp.drift
- na przykład mój plik zawiera następujące elementy:
-23.640
Oznacza to, że zegar jest o -23.64 PPM od czasu, który powinien być. Jednostkami tej liczby są PPM lub części na milion. 1 PPM to 1 mikrosekunda / sekundę lub 3,6 ms / h.
Możesz częściej aktualizować zegar, uruchamiając pacemaker
tę -a
opcję, zapewniając w sekundach czas oczekiwania między ruchami czasu:
/usr/libexec/pacemaker -a 10
Aby zobaczyć parametry używane przez OS X dla stymulatora serca, otwórz /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" );
}
Aby znaleźć bieżące ustawienia, uruchom z -i
opcją:
/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
Możesz wyświetlić dziennik, uruchamiając z -v
opcją:
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
działa. Zastanawiam się, czy/var/db/ntp-kod
błąd nie powoduje problemów z automatyczną synchronizacją - spróbuję go utworzyć i sprawdzi za kilka miesięcy. =)Ta odpowiedź dotyczy tylko 10.12 Sierra i niższych.
Szczegóły mogą być pomocne w celach informacyjnych, ale inna odpowiedź doskonale obejmuje nowsze szczegóły pomiaru czasu w systemie macOS.
Pierwszym krokiem jest sprawdzenie, czy Twój czas jest skonfigurowany.
Zakładając, że masz opóźnienie / przesunięcie / drgania mniejsze niż 100 (opóźnienie może być mniejsze niż 1000 w normalnych sytuacjach dla mniej krytycznych systemów o dokładności czasowej), po następnym poleceniu do uruchomienia w terminalu
ntpq
następuje serwer czasu z twojegontpq
i preferencji systemowych. Możesz także przetestować inne serwery czasu, aby sprawdzić, czy mają one mniejsze opóźnienia, ponieważ system pomiaru czasu lubi mieć szybką i szybką odpowiedź od serwerów czasu podczas korygowania czasu różnic milisekundowych i obliczania, w jaki sposób bieżący zegar sprzętowy odchodzi od czasu standardowego .Następną rzeczą do sprawdzenia jest program stymulatora serca:
To pokazuje, że w przypadku baterii interwał regulacji wynosi nie więcej niż raz na 10 sekund, a regulacja jest jeszcze mniejsza, jeśli błąd zegara jest mniejszy niż 0,1 milisekundy.
Jeśli okaże się, że przesunięcie wynosi kilka sekund lub dłużej, możesz zmienić używane serwery czasu lub zmienić wartości używane w stymulatorze, aby zużywać więcej energii i procesora, ale masz zegar bliższy rzeczywistemu czasowi w zamian za ustawienia, które Apple ma wysłane z 10.9.
źródło
Jeśli przejdziesz na http://time.gov , możesz zobaczyć oficjalny czas (do sekundy) i użyć go do sprawdzenia, czy czas systemowy jest poprawny, czy nie. Zauważ, że jest to oficjalny czas NIST i wykonuje on własną synchronizację w przeglądarce, niezależnie od czasu systemowego (na przykład widać tutaj, że time.gov obsługuje sekundy przestępne, podczas gdy OS X najwyraźniej nie).
źródło
Począwszy od High Sierra demon systemowy ntpd został zastąpiony demonem systemowym, który wywołuje / usr / libexec / timed.
Najlepszym exec, jaki znalazłem, aby uzyskać szczegółowe informacje, jest
systemsetup
(uruchom jako root) z jego różnymi flagami:Wynikowy wynik jest zdecydowanie mniej szczegółowy (= nudny). Np. Brak szczegółów ∂T / driftu.
Najwyraźniej czas korzysta tylko z jednego serwera ntp (pierwszy wymieniony na liście - sprawdzony za pomocą WireShark / LittleSnitch), nawet jeśli kilka jest wpisanych w pliku preferencji systemowych / ntp.conf.
Dalsza lektura (niezbyt techniczna): Czy ktoś ma czas? Jak High Sierra zmieniła synchronizację czasu
Wcześniejszy demon ntpd jest nadal obecny, ale nie jest rozładowany. Można go jednak załadować, wprowadzając w Terminal.app:
w trybie wyłączonym SIP. Wprowadzanie
ntpq -p
będzie wtedy działać ponownie.Aby załadować demona w trybie SIP, skopiuj plik do / Library / LaunchDaemons /:
Zmodyfikuj etykietę plist za pomocą nano lub innego edytora z org.ntp.ntpd-legacy na org.ntp.ntpd:
Załaduj demona:
Jeśli znajdę lepszego exec, aby uzyskać szczegółowe informacje o czasie z domyślnym demonem High Sierra, odpowiedź zostanie zaktualizowana.
źródło
Aby uzyskać wiarygodną odpowiedź na temat tego, jak dobrze ustawiony jest zegar, uruchom program ntpdate w trybie debugowania:
To będzie wirować przez chwilę i skończy się na linii, takiej jak
W tym przypadku oznaczało to, że mój zegar lokalny wyłączył jakieś 810 µs (co byłoby spektakularne, jeśli faktycznie prawdziwe, ale wartość znacznie poniżej 100 ms wskazuje na działającą synchronizację).
źródło
Aby sprawdzić synchronizację zegara, podobną do odpowiedzi, która sugeruje uruchomienie
ntpdate
w trybie debugowania, możesz również uruchomić ją w trybie zapytania, aby uzyskać mniej szczegółowe dane wyjściowe.Pochodzi z mojego komputera Mac z systemem High Sierra 10.13.2, który działa
timed
raczej niż demon NTP (ntpdate
nadal działa, ponieważ nie używa demona NTP).źródło