El reloj de Ubuntu está apagado por aproximadamente media hora:
¿Por dónde empiezo a solucionar esto?
Supuestamente se está configurando "automáticamente desde Internet". ¿Cómo puedo verificar que "Internet" sepa qué hora es?
Detalles
Ubuntu ha tenido tiempo de sobra para comunicarse con Internet:
$ date; uptime
Fri May 18 05:56:00 PDT 2012
05:56:00 up 12 days, 10:48, 2 users, load average: 0.61, 0.96, 1.15
Este servidor de tiempo que encontré a través de una búsqueda web parece saber la hora correcta:
$ date; ntpdate -q north-america.pool.ntp.org
Fri May 18 05:56:09 PDT 2012
server 208.38.65.37, stratum 2, offset 1752.625337, delay 0.10558
server 46.166.138.172, stratum 2, offset 1752.648597, delay 0.10629
server 205.189.158.228, stratum 3, offset 1752.672466, delay 0.11829
18 May 05:56:18 ntpdate[29752]: step time server 208.38.65.37 offset 1752.625337 sec
No hay errores reportados relacionados con NTP:
$ grep -ic ntp /var/log/syslog
0
Después de reiniciar, la hora se corrigió automáticamente y apareció lo siguiente en /var/log/syslog
:
May 18 17:58:12 aux ntpdate[1891]: step time server 91.189.94.4 offset 1838.497277 sec
Un registro del desplazamiento informado por ntpdate revela que el reloj se desplaza aproximadamente 9 segundos cada hora:
$ while true; do ntpdate-debian -q | tail -n 1 >> 'drift.log'; sleep 16m; done
^C
$ r -e '
attach(read.table("drift.log", header=FALSE))
clock <- as.POSIXct(paste(V1, V2, V3), format="%d %b %H:%M:%S")
fit <- lm(V10~clock)
png("drift.png")
plot(clock, V10, xlab="Clock time", ylab="Time server offset (s)")
abline(fit)
mtext(sprintf("Drift rate: %.2f s/hr", fit$coefficients[[2]]*3600))
'
Respuestas:
ntp hace bien en mantener su computadora configurada en el momento adecuado, y lo hace sin tener que ejecutarla al revés, lo que sería algo malo para algunos programas que podría estar ejecutando.
No solo establece el tiempo, sino que realiza ajustes continuos en la forma en que su computadora mantiene el tiempo para que su tiempo no solo sea correcto en un instante, sino que se mantenga cerca del tiempo real (en docenas de milisegundos, no docenas de minutos) . Ajusta tanto la fase (el tiempo) como la velocidad (qué tan rápido "marca" el reloj). ntp nunca hace que el reloj funcione al revés. Puede llevar mucho tiempo establecer qué tan rápido marcar el reloj después de un reinicio, por lo que ntp realiza un seguimiento de la deriva en un archivo llamado /var/lib/ntp/ntp.drift. Como no estás ejecutando ntp, nada de esto sucede.
ntp no es tan popular como lo era antes porque las computadoras portátiles y de escritorio en reposo, y las máquinas virtuales impiden que se ejecute parte del tiempo. Está diseñado para ejecutarse de vez en cuando en su propio horario en una computadora que funciona todo el tiempo y en el mundo real donde el tiempo es continuo. Probablemente por eso no está instalado por defecto en la estación de trabajo moderna. [Para Vmware, mira esto]
En su lugar, ntpdate se ejecuta cuando se abre la interfaz de red. Cuando se despierta una computadora portátil en reposo , restablece la conexión de red, se ejecuta ntpdate y la hora es nuevamente correcta. Si el reloj de hardware de la máquina es bastante preciso y la red se activa y desactiva con bastante frecuencia, eso generalmente es lo suficientemente bueno para la mayoría de las personas.
Por alguna razón, stock ntpdate no siempre se ejecuta. Use ntpdate-debian en su lugar en este caso. La sintaxis para for.mer es algo así como ntpdate ntp.ubuntu.com , para este último es ntpdate-debian
En ausencia de una de esas cosas, ntp es una mejor manera de mantener el tiempo.
Los sistemas están diseñados para tomar una interrupción del temporizador de vez en cuando y actualizar su idea del tiempo de cada interrupción. Mientras el temporizador de hardware esté funcionando según las especificaciones. el tiempo no se mueve demasiado. Si el temporizador de hardware no lo es, el tiempo se desplazará más (todos esos relojes se moverán a la deriva algunos, por la misma razón que su reloj de pulsera o reloj controlado por batería lo hará. Los relojes conectados a la pared se sincronizan con la hora por la frecuencia y la fase mantenida por tu compañía de energía).
La mayoría de los temporizadores de computadora están controlados por un circuito oscilador controlado por cristal en sus circuitos integrados. A pesar del cristal, corren más rápido y más lento dependiendo del ambiente, principalmente la temperatura. A menos que tenga un software de sincronización de tiempo instalado que desconocemos, diría que el reloj de su sistema no cumple las especificaciones.
Si tuviera que ejecutar ntp durante un día o dos, almacenaría información en /var/lib/ntp/ntp.drift que indicaría cuánto tendría que ajustar la velocidad a la que avanza el tiempo del sistema operativo por interrupción para haga coincidir su frecuencia de reloj de hardware con el tiempo real que pasa por Internet. Mantener el archivo igual y solo comenzar y detener ntp después de un minuto después de eso (suponiendo que mantenga el archivo /var/lib/ntp/ntp.drift sin cambios) podría hacer mucho para corregir esto si el sesgo del reloj ntp permanece después de ntp termina. No estoy seguro de este detalle.
Sospecho que el valor que ntp almacenaría en /var/lib/ntp/ntp.drift es muy diferente al mío.
Sin embargo, si esta máquina se mantiene en funcionamiento todo el tiempo, lo mejor que puede hacer es instalar ntp y dejar que haga lo suyo. Consulte las otras respuestas para obtener detalles sobre cómo obtener la hora correcta antes de comenzar. Corro NTP en mi escritorio y ntpdate en mi portátil.
Una alternativa posible interesante, adjtimex, se menciona en esta respuesta por nealmcb.
Si su sistema no se mantiene ejecutándose todo el tiempo, ejecutar ntpdate en el momento del arranque parece una buena opción.
Advertencia: algunos programas pueden enloquecer si el tiempo de las computadoras retrocede. Ejecutar ntpdate después del arranque podría hacer que esto ocurra.
Un problema, eso puede ser un problema: como recuerdo, ntp espera que el tiempo no esté demasiado lejos. Si es así, tratando de actuar de manera conservadora, ntp no ajustará el tiempo en absoluto. Si se encuentra en esta situación, tiene sentido hacer ambas cosas: ejecute ntpdate en el arranque para que el tiempo se inicialice en el momento correcto, y luego deje que el ntp se ejecute para mantenerlo en funcionamiento para proporcionar un cronometraje preciso. En particular, una batería defectuosa de la placa base puede causar este error, al igual que arrancar una computadora que ha estado apagada durante mucho tiempo.
fuente
man rtc
página dice: "Los RTC no deben confundirse con el reloj del sistema, que es un reloj de software mantenido por el núcleo y utilizado para implementar gettimeofday (2) ..." No sé si el reloj del sistema está relacionado con el reloj FSB . Mirando la configuración del kernel, el último kernel i386 preciso de Ubuntu tiene el reloj del sistema actualizado a 250Hz. ¡Gracias por el comentario!- Por lo general, el tiempo solo se sincroniza una vez cada vez que se inicia o se despierta del sueño
No, el servidor de hora de Ubuntu es correcto y está configurando la hora automáticamente.
El problema es que generalmente ocurre solo una vez después de cada arranque (o para ser más precisos, cada vez que se abre una interfaz de red , ya sea por apagado, suspensión o hibernación). Según su tiempo de actividad, es seguro decir que no se sincronizó en más de una semana. Y el reloj de su sistema funciona un poco rápido por alguna razón.
- Configure un
cron
trabajo por hora para sincronizar si no reinicia con frecuencia, o si su servidor / escritorio nunca se apagaSu mejor opción es configurar un trabajo cron, yo diría que cada hora si desea un tiempo súper preciso. La forma más fácil de hacerlo es:
sudo editor /etc/cron.hourly/ntpsync
Agregue las siguientes líneas:
sudo chmod +x /etc/cron.hourly/ntpsync
Puede poner esto en su
/etc/cron.daily
lugar si lo desea, por una vez al día.fuente
Esto puede suceder si ha instalado el demonio de tiempo ntp y el tiempo en su máquina está demasiado lejos para corregirlo rápidamente.
Para arreglarlo, abra una terminal y haga
Qué hace esto:
Si no tiene instalado ntp, hágalo con
Actualización: el uso de ntpdate en un trabajo cron, como se ha recomendado aquí, genera problemas sutiles.
El ntpdate hará que el tiempo 'salte' cada hora más o menos. El uso de ntp evita este problema, ya que ajustará el tiempo sesgando el reloj. Además, aunque seleccionar un servidor ntp en el vecindario brinda una precisión aún mayor, no es necesario. El archivo de configuración ntp predeterminado tiene varios servidores y el servidor compensa automáticamente cualquier retraso.
En pocas palabras: - use ntp - si está lejos, apague ntp, ejecute ntpdate una vez y reinicie ntp.
fuente
/etc/init.d/ntp
no existe Esta es una instalación bastante reciente de Ubuntu 12.04 y no he cambiado deliberadamente nada relacionado con el tiempo.Tuve un problema similar y fue causado por algo en el firewall. Al final, agregué el trabajo cron por hora, pero agregué el
-u
argumento parantpdate
que use un puerto no estándar.Mi problema fue causado por Ubuntu que en realidad no verificaba si
ntpdate
funcionaba, sino que suponía automáticamente que funcionaría.fuente