10.14 Mojave
Mojave todavía usa timed
, pero ntpdate
y los ayudantes ntpq
se eliminan. Para verificar y actualizar la hora de su sistema, puede llamar sntp
directamente.
$ 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
Fuera de la caja, falta un archivo de seguimiento, por lo que si obtiene este error inofensivo al verificar el tiempo:
kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory
ignore el error o intente crear ese archivo vacío:
sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod
10.13 Sierra alta
High Sierra utiliza timed
, desde /usr/libexec/timed
, ejecutado por el usuario del sistema _timed
.
timed mantiene la precisión del reloj del sistema sincronizando el reloj con relojes de referencia a través de tecnologías como NTP. Las entradas se fusionan dentro del tiempo programado, donde calcula la incertidumbre para facilitar la programación de trabajos de tiempo proactivo. temporizado también es consciente de las condiciones de alimentación / batería.
cronometrado es administrado por LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist
. carreras cronometradas ...
- cuando el demonio se carga en el arranque (RunAtLoad: true)
- cada 3600 segundos (StartInterval: 3600)
- cuando el Modo avión está deshabilitado (el modo avión com.apple.systemconfiguration cambió: com.apple.radios.plist AirplaneMode false, que parece ser transferido desde iOS)
Puede ver qué tan "apagado" está su reloj mirando el contenido de /var/db/timed/com.apple.timed.plist
, debajo del diccionario TMLastSystemTime en la clave TMTimeError y la clave 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";
}
temporizado utiliza el servidor de tiempo configurado /etc/ntp.conf
, que de forma predeterminada es
server time.apple.com
timed también usa TMTimeSynthesizer, algo que CoreTime en iOS usa para actualizar el reloj, pero no conozco su historial en macOS:
No ejecute el binario temporizado usted mismo, como se menciona en la página del manual:
temporizado no requiere argumentos, y los usuarios no deben iniciarlo manualmente.
De acuerdo con el usuario de los Foros de Desarrolladores de Apple granada29 en el post ntpd, cronometrado y cronyd en 10.13 , cronometrado realiza lo siguiente:
timed parece ser un simple cliente sntp, es decir, sondea el NTP periódicamente (15 minutos) y utiliza la llamada al sistema settimeofday () para configurar el reloj del sistema. Supongo que tiene cierta inteligencia para evitar retroceder el reloj, pero no hay forma de saberlo.
10.11 El Capitán a 10.12 Sierra
pacemaker
es el demonio responsable de administrar el tiempo en macOS. Se utiliza adjtime
para ajustar el reloj según el contenido de /var/db/ntp.drift
.
Puede ver qué tan 'apagado' está su reloj mirando el contenido de ntp.drift
, por ejemplo, mi archivo contiene lo siguiente:
-23.640
Esto significa que el reloj está a -23.64 PPM de la hora en que debería estar. Las unidades de este número son PPM, o partes por millón. 1 PPM es 1 microsegundo / segundo, o 3.6ms / h.
Puede hacer que el reloj se actualice con mayor frecuencia ejecutando pacemaker
la -a
opción, proporcionando un tiempo en segundos para esperar entre movimientos de tiempo:
/usr/libexec/pacemaker -a 10
Para ver los parámetros que usa OS X para el marcapasos, abra /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" );
}
Para encontrar su configuración actual, ejecute con la -i
opción:
/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
Puede mostrar el registro ejecutando con la -v
opción:
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
funcionó. Me pregunto si el/var/db/ntp-kod
error está causando problemas con la sincronización automática; intentaré crearlo y volveré a comprobarlo en unos meses. =)