¿Cómo puedo saber si mi Mac mantiene el reloj actualizado correctamente?

Me gustaría saber cuáles son las configuraciones predeterminadas para OS X en términos de mantener el reloj ajustado cuando habilito la sincronización automática de la hora en la preferencia Fecha y hora.

Sé que el venerable demonio ntpd en Mavericks (10.9) y Yosemite (10.10) ya no es responsable de ajustar la hora y, en cambio, se ha introducido un nuevo progtwig de pacemaker . ¿Cómo puedo saber si las cosas funcionan o es necesario ajustarlas para mantener la hora? ?

10.14 Mojave

Mojave todavía usa timed , pero ntpdate ha sido eliminado. Para verificar y actualizar la hora de su sistema, puede llamar a 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 

Si está recibiendo este error:

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

tratar:

 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 .

cronometrado mantiene la precisión del reloj del sistema al sincronizar el reloj con los relojes de referencia mediante tecnologías como NTP. Las entradas se combinan dentro de cronometrada, donde se calcula la incertidumbre para facilitar la progtwigción de trabajos de tiempo proactivo. El tiempo también es consciente de las condiciones de alimentación / batería.

timed es administrado por LaunchDaemon /System/Library/LaunchDaemons/com.apple.timed.plist . carreras cronometradas …

  • cuando el daemon se carga en el arranque (RunAtLoad: true)
  • cada 3600 segundos (StartInterval: 3600)
  • cuando el Modo de 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"; } 

Captura de pantalla de Xcode de la lista mencionada

cronometrado usa el servidor de tiempo establecido en /etc/ntp.conf , que por defecto es

 server time.apple.com 

Timed también usa TMTimeSynthesizer, algo que CoreTime en iOS usa para actualizar el reloj pero no conozco su historia en macOS:

Fuentes cronometradas

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.

De acuerdo con el usuario granada29 de los Foros de desarrolladores de Apple en la publicación ntpd, cronometrada y cronológica en 10.13 , cronometrada realiza lo siguiente:

timed parece ser 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 el tiempo 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 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 el pacemaker con la opción -a , lo que proporciona un tiempo en segundos para esperar entre movimientos de tiempo:

 /usr/libexec/pacemaker -a 10 

Para ver los parámetros utilizados por OS X para 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] : --- settings for external power --- Jan 19 18:20:08 g pacemaker[12544] : interval = 1 seconds, tolerance = 0.000000, drift = -23.640000 Jan 19 18:20:08 g pacemaker[12544] : --- settings for internal power --- Jan 19 18:20:08 g pacemaker[12544] : 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] : power status check: using external power Jan 19 18:23:17 g pacemaker[13202] : created file monitor for /var/db/ntp.drift Jan 19 18:23:17 g pacemaker[13202] : interval = 1 seconds, tolerance = 0.000000, drift = -23.640000 Jan 19 18:23:19 g pacemaker[13202] : drift -23.640000 residue 0.000000 delta -23 Jan 19 18:23:20 g pacemaker[13202] : drift -23.640000 residue -0.640000 delta -24 Jan 19 18:23:21 g pacemaker[13202] : drift -23.640000 residue -0.280000 delta -23 Jan 19 18:23:22 g pacemaker[13202] : drift -23.640000 residue -0.920000 delta -24 Jan 19 18:23:23 g pacemaker[13202] : drift -23.640000 residue -0.560000 delta -24 Jan 19 18:23:24 g pacemaker[13202] : drift -23.640000 residue -0.200000 delta -23 ⌃C% 

El primer paso es ver si su tiempo está configurado.

 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 

Suponiendo que tenga valores de retardo / desplazamiento / fluctuación de fase inferiores a 100 (el retardo podría ser inferior a 1000 en situaciones normales para sistemas críticos con menos tiempo), el siguiente comando para ejecutar en terminal es ntpq seguido del servidor de tiempo de su ntpq y sistema preferencia. También puede probar otros servidores de tiempo para ver si tienen retrasos menores, ya que al sistema de control de tiempo le gusta tener una respuesta cercana y rápida de los servidores de tiempo cuando corrigen la diferencia de milisegundos y calculan cómo el reloj de hardware actual se está alejando del tiempo estándar. .

 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 

Lo siguiente a verificar es su progtwig de marcapasos:

 Mac:~ me$ ps -ef|grep [p]acemaker 0 76 1 0 Fri08AM ?? 0:03.64 /usr/libexec/pacemaker -b -e 0.0001 -a 10 

Esto muestra que, en la batería, el intervalo de ajuste no es más de una vez cada 10 segundos y se ajusta aún menos si el error del reloj es inferior a 0,1 milisegundos.

Si encuentra que su desplazamiento es de segundos o más, puede cambiar los servidores de tiempo que usa o quizás cambiar los valores utilizados en el marcapasos para usar más energía y CPU, pero tener un reloj más cercano al tiempo real a cambio de la configuración que Apple tiene enviado con 10.9.

  • ¿Cómo puedo mantener sincronizado el reloj de mi sistema en Mavericks?
  • ntpd no actualizando el tiempo
  • ntpd: hora constantemente incorrecta en la MacBook Air de mediados de 2013

Si visita http://time.gov , puede ver la hora oficial (hasta el segundo) y usarla para verificar si la hora del sistema es correcta o no. Tenga en cuenta que esta es la hora oficial de NIST, y realiza su propia sincronización en el navegador, independientemente de la hora del sistema (como ejemplo, puede ver aquí que time.gov maneja los segundos de salto, mientras que OS X aparentemente no lo hace).

Comenzando con High Sierra, el demonio del sistema ntpd fue reemplazado por el demonio del sistema temporizado que invoca a / usr / libexec / timed.

El mejor exec que he encontrado para obtener detalles es systemsetup (run as root) con sus diferentes banderas:

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

El resultado resultante es mucho menos detallado (= aburrido). Por ejemplo, no hay detalles de ∂T / deriva.

Aparentemente, el tiempo utiliza solo un servidor ntp (el primero en la lista, verificado con WireShark / LittleSnitch) incluso si se ingresan varios en el archivo de preferencias del sistema / ntp.conf.

Lecturas adicionales (no muy técnicas): ¿Alguien tiene tiempo? Cómo High Sierra ha cambiado la sincronización de tiempo


Un demonio ntpd heredado todavía está presente pero descargado. Se puede cargar sin embargo ingresando en Terminal.app:

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

en modo deshabilitado SIP. Ingresando ntpq -p funcionará de nuevo entonces.

Para cargar el daemon en modo habilitado SIP, copie el archivo a / Library / LaunchDaemons /:

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

Modifique la etiqueta de la lista con nano u otro editor de org.ntp.ntpd-legacy a org.ntp.ntpd:

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

Cargar el demonio:

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

Si encuentro un ejecutivo mejor para obtener detalles de tiempo con el daemon de High Sierra predeterminado, la respuesta se actualizará.

Para obtener una respuesta confiable sobre qué tan bien está configurado su reloj, ejecute ntpdate en modo de depuración:

 ntpdate -d pool.ntp.org 

Esto girará por un tiempo y terminará en una línea como

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

En este caso, esto significaba que mi reloj local estaba apagado a unos 810 µs (lo que sería espectacular, si fuera cierto, pero el valor muy por debajo de 100 ms indica una sincronización de trabajo).

Para verificar la sincronización del reloj, similar a la respuesta que sugiere ejecutar ntpdate en el modo de depuración, también puede ejecutarlo en el modo de consulta para obtener un resultado menos detallado.

 $ ntpdate -q pool.ntp.org server 85.199.214.102, stratum 1, offset 0.006256, delay 0.05470 server 95.215.175.2, stratum 3, offset 0.005234, delay 0.05624 server 217.114.59.3, stratum 2, offset 0.007166, delay 0.06274 server 85.199.214.100, stratum 1, offset 0.006319, delay 0.05396 22 Jun 09:20:55 ntpdate[84112]: adjust time server 85.199.214.100 offset 0.006319 sec $ 

Esto es de mi Mac que ejecuta High Sierra 10.13.2, que se ejecuta timed lugar del demonio NTP ( ntpdate todavía funciona porque no usa el demonio NTP).