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

45

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 hora en la preferencia Fecha y hora.

Sé que el venerable ntpddemonio en Mavericks (10.9) y Yosemite (10.10) ya no es responsable de ajustar el tiempo y en su lugar pacemakerse ha introducido un nuevo programa , entonces, ¿cómo puedo saber que las cosas están funcionando o necesito un ajuste para mantener el tiempo?

bmike
fuente

Respuestas:

71

10.14 Mojave

Mojave todavía usa timed, pero ntpdatey los ayudantes ntpqse eliminan. Para verificar y actualizar la hora de su sistema, puede llamar sntpdirectamente.

$ 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

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

Captura de pantalla de Xcode de la lista mencionada

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:

Fuentes cronometradas

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

pacemakeres el demonio responsable de administrar el tiempo en macOS. Se utiliza adjtimepara 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 pacemakerla -aopció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 -iopció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 -vopció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%
grg
fuente
Mi sistema Mojave no se sincronizó automáticamente, pero sntpfuncionó. Me pregunto si el /var/db/ntp-koderror está causando problemas con la sincronización automática; intentaré crearlo y volveré a comprobarlo en unos meses. =)
Ken Williams
5

Esta respuesta se aplica solo a 10.12 Sierra y menor.

Los detalles pueden ser útiles como referencia, pero otra respuesta cubre los detalles más nuevos de cronometraje de macOS de manera excelente.


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 tiene valores de retraso / desplazamiento / fluctuación de fase inferiores a 100 (el retraso podría ser inferior a 1000 en situaciones normales para sistemas críticos con menos precisión de tiempo), el siguiente comando para ejecutar en la terminal es ntpqseguido por el servidor de tiempo de su ntpqpreferencia y sistema. También puede probar otros servidores de hora para ver si tienen retrasos más bajos ya que al sistema de cronometraje le gusta tener una respuesta rápida y cercana de los servidores de hora al corregir la hora por diferencias de milisegundos y calcular cómo el reloj de hardware actual se está alejando de la hora 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 que debe verificar es su programa 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, es posible que desee 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 tenga un reloj más cercano al tiempo real a cambio de la configuración que Apple tiene enviado con 10.9.

bmike
fuente
4

Si va a http://time.gov , puede ver la hora oficial (hasta el segundo) y usarla para verificar si la hora de su 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 bisiestos, mientras que OS X aparentemente no).

asmeurer
fuente
¿Podría explicar cómo esto afecta mi elección de usar "mantener el reloj sincronizado"? Supongo que esta es una respuesta tan buena como "verifique su Apple Watch: es preciso hasta el segundo".
bmike
1
La pregunta es "¿cómo puedo saber si mi Mac mantiene mi reloj actualizado correctamente?" Si "mirar la hora oficial" no responde a su pregunta, probablemente debería reformularla.
asmeurer
Con respecto a time.gov, es la hora oficial del NIST y se sincroniza en el navegador cuando visita la página. Decir "comprobar un Apple Watch" sería lo mismo que decirle que el reloj de su sistema OS X ya está sincronizado de manera predeterminada (lo cual es cierto, pero realmente no responde la pregunta). Esto también es mucho más barato que un Apple Watch, y el Apple Watch no tiene una segunda pantalla digital AFAIK.
asmeurer
Mi suposición fue que el reloj tiene más ingeniería para mantener la hora precisa y precisa. Los relojes Mac son notoriamente más precisos y menos precisos. Lo mismo ocurre con cualquier computadora que conozca: la precisión es difícil para medir el tiempo. +1 para la explicación detallada de las características web. (Incluso si no está en el cuerpo de la respuesta)
bmike
4

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

El mejor ejecutivo que he encontrado para obtener detalles es systemsetup(ejecutar como root) con sus diversos indicadores:

[-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 usa solo un servidor ntp (el primero en la lista, verificado con WireShark / LittleSnitch) incluso si se ingresan varios en el archivo de preferencias / ntp.conf del sistema.

Lectura adicional (no muy técnica): ¿Alguien tiene el tiempo? Cómo High Sierra ha cambiado la sincronización horaria


Un daemon ntpd heredado todavía está presente pero descargado. Sin embargo, se puede cargar ingresando en Terminal.app:

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

en modo deshabilitado SIP. Entrar ntpq -pfuncionará de nuevo entonces.

Para cargar el demonio en modo SIP habilitado, 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 del plist con nano u otro editor de org.ntp.ntpd-legacy a org.ntp.ntpd:

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

Cargue el demonio:

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

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

klanomath
fuente
1
El consejo para habilitar ntpd antiguo no es una buena opción cuando se usa High Sierra, porque /System/Library/LaunchDaemons/org.ntp.ntpd-legacy.plist está deshabilitado y "asegurado" con SIP. Entonces, si no desea cargarlo, primero debe desactivar SIP. (/ usr / bin / csrutil disabled)
Juergen Braendle
2

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 unos 810 µs (lo que sería espectacular, si es que es cierto, pero el valor muy por debajo de 100 ms indica una sincronización de trabajo).

Cabo
fuente
1

Para verificar la sincronización del reloj, similar a la respuesta que sugiere que se ejecute ntpdateen modo de depuración, también puede ejecutarlo en modo de consulta para obtener resultados menos detallados.

$ 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 en timedlugar del demonio NTP ( ntpdatetodavía funciona porque no usa el demonio NTP).

SelvaMartin
fuente