10.14 Mojave
Mojave todavía usa timed
, pero ntpdate
se ha eliminado. Para verificar y actualizar la hora del sistema, puede llamar directamente a sntp
.
$ 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
Si está recibiendo este error:
kod_init_kod_db(): Cannot open KoD db file /var/db/ntp-kod: No such file or directory
prueba:
sudo touch /var/db/ntp-kod
sudo chmod 666 /var/db/ntp-kod
10.13 High Sierra
High Sierra usa timed
, desde /usr/libexec/timed
, ejecutado por el usuario del sistema _timed
.
cronometrado mantiene la precisión del reloj del sistema al sincronizar el reloj con los relojes de referencia a través de tecnologías como NTP. Las entradas se combinan dentro de cronometrada, donde se calcula la incertidumbre para facilitar la programación de trabajos de tiempo proactivo. El tiempo también es consciente de las condiciones de energía / batería.
timed es administrado por LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist
. carreras cronometradas ...
- cuando el daemon se carga al inicio (RunAtLoad: true)
- cada 3600 segundos (StartInterval: 3600)
- cuando el Modo avión está deshabilitado (el modo de avión com.apple.systemconfiguration cambió: com.apple.radios.plist AirplaneMode false, que parece haberse 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 usa el servidor de tiempo establecido en /etc/ntp.conf
, que de manera 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 cronometrado usted mismo, como se menciona en la página del manual:
el tiempo no toma argumentos, y los usuarios no deben iniciarlo manualmente.
Según el usuario granada29 de los Foros de desarrolladores de Apple en la publicación ntpd, cronometrado y cronológico en 10.13 , cronometrado cumple la siguiente:
parece que el tiempo es un simple cliente sntp, es decir, sondea el NTP periódicamente (15 minutos) y usa la llamada al sistema settimeofday () para configurar el reloj del sistema. Supongo que tiene algo de astucia para evitar que el reloj retroceda, pero no hay manera de saberlo.
10.11 El Capitán a 10.12 Sierra
pacemaker
es el demonio responsable de administrar el tiempo en macOS. Utiliza adjtime
para ajustar el reloj según el contenido de /var/db/ntp.drift
.
Puede ver qué tan "apagado" está su reloj mirando los contenidos de ntp.drift
; por ejemplo, mi archivo contiene lo siguiente:
-23.640
Esto significa que el reloj está a -23.64 PPM del tiempo 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 más frecuencia ejecutando pacemaker
con la opción -a
, 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 opción -i
:
/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 opción -v
:
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%