¿Cómo puedo arreglar permanentemente mi problema de sincronización de fecha en Linux?

5

El reloj / fecha / hora del servidor Ubuntu 7.10 i386 no se sincronizará. ¿Puedo ver sus archivos de registro para saber cuándo cambia el reloj? Para una solución temporal, creé un archivo en /etc/cron.hourly:

#!/bin/sh
ntpdate time.nist.gov

Sin embargo, esto todavía deja una hora potencial de tiempo sin control. ¿Hay un cron.minutely? Eso todavía dejaría un minuto potencial de tiempo sin control. He leído sobre problemas con la batería CMOS, pero ¿qué pasa si esto no lo soluciona? Me gustaría poder solucionar esto como un problema completamente de software.

Mis registros de calamar muestran fechas en 2005 cuando cambia el reloj, y mis controles de acceso urgentes están sesgados y terminan permitiendo a los usuarios navegar por sitios web prohibidos durante el horario comercial.

David Fox
fuente

Respuestas:

14

El consejo sobre cómo ejecutar ntpdate es bueno, pero solo reducirá su tiempo. Una mejor opción es instalar ntpd y usarlo para mantener sincronizado el reloj local, evitando registros sesgados.

Con Ubuntu deberías poder hacerlo apt-get install ntp. Eso debería instalar ntpdate y ntpd, configurarlos para usarlos ntp.ubuntu.comcomo el único servidor y sincronizar la hora. Para completar, querrá agregar otros servidores NTP (por ejemplo 0.pool.ntp.org, 1.pool.ntp.orgy 2.pool.ntp.org).

Llora Havok
fuente
3
ntpd es realmente el camino a seguir. Ejecutar ntpdate con cron puede darte algunos efectos no deseados.
Jimmy Hedman
1
+1 Ntpd es lo que usan los profesionales. Aunque puede ejecutar cron en cualquier momento hasta el segundo. El beneficio de ntpd es que el cambio de hora no es instantáneo. Cambia el tiempo para que coincida con el tiempo real en un período corto, por lo que las cosas que se programaron no se omiten ni se ejecutan de manera errática.
Satanicpuppy
El nombre del paquete para el demonio ntp y las utilidades en mi sistema Ubuntu 9.10 es "ntp" en lugar de "ntpd".
Dennis Williamson
1
El paquete Ubuntu usa la -gbandera por defecto, lo que permite que ntpd acepte cualquier diferencia de tiempo solo en el inicio. Pasará el tiempo si es superior a 128 ms, de lo contrario, cambiará.
Cry Havok
1
gracias, monitoreé durante aproximadamente 5 horas esta mañana. Parece estar funcionando. tuvo que actualizar a 8.04.4 LTS para instalar. sistema no se había mantenido en un tiempo :)
David Fox
3

Tuve el mismo problema ayer pero bajo Slackware 8. Para resumir, leí mucho en Google para finalmente volver a crear una imagen de la computadora. Mi gerente me envió ese enlace pero no solucionó mi problema.

Cambié la hora local a la hora UTC. Cambié el timezome para tener el bueno en ambos.

¡Espero que esto te ayudará!

Además, puedes probar esto:

ntpdate 0.pool.ntp.org
hwclock --systohc
r0ca
fuente
1

Tuve el mismo problema en un sistema Debian Lenny (antes era una instalación antigua de Ubuntu 7.04) debido a un chipset escamoso en la placa base de hace una década. Aquí está mi solución cron ; para mis propósitos, dos veces al día lo mantiene sincronizado lo suficiente, y luego una vez a la semana se sincroniza y guarda en el reloj del hardware (que es muy sólido en mi sistema).

Ponga esto en /etc/cron.d/ntpsync :

# /etc/cron.d/ntpsync: run ntpdate-debian twice daily, sync hwclock once weekly

# run at 11:23 (am & pm) (update system clock)
23 11,23        * * *   root    test -x /usr/sbin/ntpdate-debian && /usr/sbin/ntpdate-debian  2>&1 | logger -i

# run at 11:59pm fridays (update system clock & save to hwclock)
59 23   * * 5   root    test -x /usr/sbin/ntpdate-debian && test -x /etc/init.d/hwclock.sh && /usr/sbin/ntpdate-debian && /etc/init.d/hwclock.sh restart 2>&1 | logger -i

Esto usa la sintaxis estándar de crontab para establecer tiempos y días, por lo que puede obtener minuciosamente si lo desea de manera tan precisa. El "registrador -i" al final de la cadena de mando envía la salida a syslog 's cron facilidades de registro.

quijote curandero
fuente
0

Puede configurar un cron para eso.

En / etc / crontab agregue la línea

* * * * * root ntpdate time.nist.gov > /dev/null

Puede lograr esto como tipo raíz (o superusuario)

echo '* * * * * root /usr/sbin/ntpdate time.nist.gov > /dev/null' >> /etc/crontab


requisito previo : ntpdate para ser instalado en VM

apt-get update apt-get install ntpdate

Gnutt
fuente
¿Puedes explicar cómo funcionaría esto?
David Fox
Es muy importante recordar usar dos (2) ">" antes de / etc / crontab, si haces lo que hice, y comenzar con uno ... sobrescribes el archivo / etc / crontab con solo la nueva línea, en lugar de agregarlo, haz el final.
Gnutt
3
Simplemente haga "crontab -e" para abrirlo en un editor. La creación de secuencias de comandos en su crontab no es realmente algo que desee hacer de forma regular: hace que el archivo sea desordenado y difícil de leer (así como potencialmente sobrescribirlo si pierde su>).
Satanicpuppy