66 votes

Comment puis-je savoir si mon Mac met correctement l'horloge à jour ?

J'aimerais savoir quels sont les paramètres par défaut pour OS X en termes de maintien de l'horloge ajustée lorsque j'active la synchronisation automatique de l'heure dans la préférence Date & Heure.

Je sais que le vénérable ntpd sur Mavericks (10.9) et Yosemite (10.10) n'est plus responsable du réglage de l'heure et un nouveau programme, le pacemaker a été introduite - alors comment puis-je savoir si les choses fonctionnent ou si elles doivent être ajustées pour garder le temps ?

129voto

grg Points 181593

10,14 Mojave

Mojave utilise toujours timed mais ntpdate et les aides ntpq sont supprimées. Pour vérifier et mettre à jour l'heure de votre système, vous pouvez appeler sntp directement.

$ 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

Dans la boîte, un fichier de suivi est manquant. Donc si vous obtenez l'erreur ci-dessous lors de la vérification du temps :

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

créer le fichier et changer la propriété en root . Certaines personnes ont signalé que cela brisait la synchronisation ntp.

sudo touch /var/db/ntp-kod
sudo chown root:wheel /var/db/ntp-kod

Puis exécutez à nouveau pour vérifier si le message d'erreur a disparu.

sudo sntp -sS pool.ntp.org

10.13 High Sierra

High Sierra utilise timed , de /usr/libexec/timed exécuté par l'utilisateur du système _timed .

timed maintient la précision de l'horloge du système en synchronisant l'horloge avec des horloges de référence via des technologies comme NTP. Les entrées sont fusionnées à l'intérieur de timed, où il calcule l'incertitude pour faciliter la programmation des tâches de temps proactif. timed est également conscient des conditions d'alimentation/de batterie.

timed est géré par le LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist . des courses chronométrées

  • lorsque le démon est chargé au démarrage (RunAtLoad : true)
  • toutes les 3600 secondes (StartInterval : 3600)
  • lorsque le mode avion est désactivé (com.apple.systemconfiguration airplane mode modifié : com.apple.radios.plist AirplaneMode false, qui semble avoir été repris d'iOS)

Vous pouvez voir à quel point votre horloge est "décalée" en regardant le contenu du fichier /var/db/timed/com.apple.timed.plist sous le dictionnaire TMLastSystemTime, dans la clé TMTimeError et la clé 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";
}

Xcode screenshot of mentioned plist

timed utilise le serveur de temps défini dans /etc/ntp.conf qui, par défaut, est

server time.apple.com

timed utilise également TMTimeSynthesizer, quelque chose que CoreTime sur iOS utilise pour mettre à jour l'horloge, mais je ne connais pas son histoire sur MacOS :

timed Sources

N'exécutez pas vous-même le binaire temporisé, comme indiqué dans la page de manuel :

timed ne prend aucun argument, et les utilisateurs ne doivent pas le lancer manuellement.

Selon l'utilisateur granada29 des Apple Developer Forums dans le post ntpd, timed et chronyd en 10.13 le chronométré effectue les opérations suivantes :

timed semble être un simple client sntp - c'est-à-dire qu'il interroge le NTP périodiquement (15 minutes) et utilise l'appel système settimeofday() pour régler l'horloge du système. Je suppose qu'il a une certaine intelligence pour éviter de reculer l'horloge mais il n'y a aucun moyen de le savoir.

10.11 El Capitan à 10.12 Sierra

pacemaker est le démon responsable de la gestion de l'heure dans MacOS. Il utilise adjtime pour régler l'horloge selon le contenu de /var/db/ntp.drift .

Vous pouvez voir à quel point votre horloge est "décalée" en regardant le contenu du fichier ntp.drift - Par exemple, mon fichier contient ce qui suit :

-23.640

Cela signifie que l'horloge est à -23,64 PPM de l'heure qu'elle devrait être. L'unité de ce nombre est le PPM, ou Parts Per Million. 1 PPM correspond à 1 microseconde/seconde, ou 3,6ms/h.

Vous pouvez faire en sorte que l'horloge se mette à jour plus souvent en exécutant pacemaker avec le -a option, fournissant un temps en secondes à attendre entre les mouvements de temps :

/usr/libexec/pacemaker -a 10

Pour voir les paramètres utilisés par OS X pour le pacemaker, ouvrez /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" );
}

Pour connaître vos paramètres actuels, exécutez la commande -i option :

/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

Vous pouvez afficher le journal en exécutant la commande -v option :

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%

0 votes

Mon système Mojave n'a pas voulu se synchroniser automatiquement, mais sntp travaillé. Je me demande si le /var/db/ntp-kod Cette erreur cause des problèmes avec la synchronisation automatique - je vais essayer de la créer et de vérifier dans quelques mois. =)

0 votes

Y a-t-il une mise à jour pour BigSur ?

0 votes

Big Sur utilise aussi apparemment encore timed .

5voto

Oskar Points 1242

Cette réponse ne s'applique qu'aux versions 10.12 Sierra et inférieures.

Les détails peuvent être utiles à titre de référence, mais une autre réponse couvre parfaitement les détails plus récents du chronométrage sous MacOS.


La première étape consiste à vérifier si votre temps est configuré.

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

En supposant que vous avez des valeurs de delay/offset/jitter inférieures à 100 (le delay pourrait être inférieur à 1000 dans des situations normales pour des systèmes moins critiques en termes de temps), la commande suivante à exécuter dans le terminal est la suivante ntpq suivi par le serveur de temps de votre ntpq et les préférences du système. Vous pouvez également tester d'autres serveurs de temps pour voir s'ils ont des délais plus courts, car le système de chronométrage aime avoir une réponse proche et rapide des serveurs de temps lorsqu'il corrige l'heure pour des différences de quelques millisecondes et calcule comment l'horloge matérielle actuelle s'éloigne de l'heure 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 prochaine chose à vérifier est le programme de votre 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

Cela montre que sur batterie, l'intervalle de réglage n'est pas supérieur à une fois toutes les 10 secondes et qu'il est même inférieur si l'erreur d'horloge est inférieure à 0,1 milliseconde.

Si vous constatez que votre décalage est de quelques secondes ou plus, vous pourriez vouloir changer les serveurs de temps que vous utilisez ou peut-être changer les valeurs utilisées sur pacemaker pour utiliser plus d'énergie et de CPU mais avoir une horloge plus proche de l'heure réelle en échange des paramètres qu'Apple a livrés avec 10.9.

5voto

Zsub Points 1737

Si vous allez à http://time.gov vous pouvez voir l'heure officielle (à la seconde près) et l'utiliser pour vérifier si l'heure de votre système est correcte ou non. Notez qu'il s'agit de l'heure officielle du NIST, qui effectue sa propre synchronisation dans le navigateur, indépendamment de l'heure du système (à titre d'exemple, vous pouvez voir ici que time.gov gère les secondes intercalaires, alors qu'OS X ne le fait apparemment pas).

0 votes

Pourriez-vous préciser comment cela affecte mon choix d'utiliser "maintenir l'horloge synchronisée" ? Je suppose que c'est une réponse aussi bonne que "vérifiez votre Apple Watch - elle est précise à la seconde près".

3 votes

La question est "comment puis-je savoir si mon Mac met correctement mon horloge à jour ?". Si "regarder l'heure officielle" ne répond pas à votre question, vous devriez probablement la reformuler.

0 votes

En ce qui concerne time.gov, il s'agit de la officiel L'heure NIST, et effectue sa propre synchronisation dans le navigateur lorsque vous visitez la page. Dire "vérifier une Apple Watch" reviendrait à vous dire que votre horloge système OS X est déjà synchronisée par défaut (ce qui est vrai, mais ne répond pas vraiment à la question). C'est aussi beaucoup moins cher qu'une Apple Watch, et l'Apple Watch n'a pas d'affichage numérique des secondes AFAIK.

5voto

klanomath Points 63400

À partir de High Sierra, le démon système ntpd a été remplacé par le démon système timed qui invoque /usr/libexec/timed.

La meilleure exécution que j'ai trouvée pour obtenir des détails est systemsetup (exécuté en tant que Root) avec ses différents drapeaux :

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

La sortie qui en résulte est de loin moins verbeuse (= ennuyeuse). Par exemple, pas de détails sur les T/dérives.

Apparemment chronométré n'utilise qu'un seul serveur ntp (le premier de la liste - vérifié avec WireShark/LittleSnitch) même si plusieurs sont saisis dans le fichier préférences système/ntp.conf.

Autres lectures (pas très techniques) : Quelqu'un a-t-il l'heure ? Comment High Sierra a modifié la synchronisation de l'heure


Un ancien démon ntpd est toujours présent mais non chargé. Il peut cependant être chargé en entrant dans Terminal.app :

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

en mode SIP désactivé. Entrer sur ntpq -p fonctionnera à nouveau alors.

Pour charger le démon en mode SIP activé, copiez le fichier dans /Library/LaunchDaemons/ :

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

Modifiez le label de la plist avec nano ou un autre éditeur de org.ntp.ntpd-legacy à org.ntp.ntpd :

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

Charger le démon :

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

Si je trouve une meilleure exécution pour obtenir les détails de l'heure avec le démon High Sierra par défaut, la réponse sera mise à jour.

1 votes

L'astuce consistant à activer l'ancien ntpd n'est pas une bonne option lorsque vous utilisez High Sierra, car /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist est désactivé et "sécurisé" avec SIP. Donc si vous voulez le charger, vous devez d'abord désactiver SIP. (/usr/bin/csrutil disable)

3voto

cabo Points 131

Pour obtenir une réponse fiable sur la façon dont votre horloge est réglée, exécutez ntpdate en mode débogage :

ntpdate -d pool.ntp.org

Cela va tourner pendant un moment et se terminer par une ligne telle que

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

Dans ce cas, cela signifiait que mon horloge locale était décalée de 810 µs (ce qui serait spectaculaire, si c'était vrai, mais la valeur bien inférieure à 100 ms indique une synchronisation qui fonctionne).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X