10.14 Mojave
Mojave utilise toujours timed
, mais ntpdate
et les assistants ntpq
sont supprimés. 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
Hors de la boîte, un fichier de suivi est manquant, donc si vous obtenez cette erreur inoffensive lors de la vérification de l'heure:
kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory
ignorez l'erreur ou essayez de créer ce fichier vide:
sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod
10.13 High Sierra
High Sierra utilise timed
, depuis /usr/libexec/timed
, géré par l'utilisateur du système _timed
.
timed maintient la précision de l'horloge du système en synchronisant l'horloge avec les horloges de référence via des technologies comme NTP. Les entrées sont fusionnées à l'intérieur de temporisé, où il calcule l'incertitude pour faciliter la planification des tâches horaires proactives. timed est également au courant des conditions d'alimentation / de la batterie.
timed est géré par LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist
. 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é (mode avion com.apple.systemconfiguration modifié: com.apple.radios.plist AirplaneMode false, qui semble être transféré depuis iOS)
Vous pouvez voir l'état de votre horloge en regardant le contenu de /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 est par défaut
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 historique sur macOS:
Ne lancez pas vous-même le binaire chronométré, comme mentionné dans la page de manuel:
timed ne prend aucun argument et les utilisateurs ne doivent pas le lancer manuellement.
Selon l'utilisateur des forums des développeurs Apple granada29 dans le post ntpd, timed et chronyd en 10.13 , timed 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, 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 sous macOS. Il permet adjtime
d'ajuster l'horloge en fonction du contenu de /var/db/ntp.drift
.
Vous pouvez voir à quel point votre horloge est éteinte en regardant le contenu de ntp.drift
- par exemple, mon fichier contient les éléments suivants:
-23.640
Cela signifie que l'horloge est à -23,64 PPM de l'heure qu'elle devrait être. Les unités de ce nombre sont PPM ou Parts Per Million. 1 PPM correspond à 1 microseconde / seconde ou 3,6 ms / h.
Vous pouvez effectuer la mise à jour de l'horloge plus souvent en exécutant pacemaker
l' -a
option, en fournissant un temps d'attente en secondes entre les mouvements de temps:
/usr/libexec/pacemaker -a 10
Pour voir les paramètres utilisés par OS X pour stimulateur cardiaque, 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 trouver vos paramètres actuels, exécutez l' -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 avec l' -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%
sntp
fonctionnait. Je me demande si l'/var/db/ntp-kod
erreur cause des problèmes avec la synchronisation automatique - j'essaierai de la créer et reviendra dans quelques mois. =)