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";
}
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 :
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%