Estoy ejecutando Ubuntu en un sistema integrado basado en ARM que carece de un RTC respaldado por batería. La hora de despertarse es en algún lugar durante 1970. Por lo tanto, uso el servicio NTP para actualizar la hora a la hora actual.
Agregué la siguiente línea al /etc/rc.localarchivo:
sudo ntpdate -s time.nist.gov
Sin embargo, después del inicio, todavía toma un par de minutos hasta que se actualice el tiempo, durante el cual no puedo trabajar de manera efectiva con tary make.
¿Cómo puedo forzar una actualización de reloj en un momento dado?
ACTUALIZACIÓN 1: Lo siguiente (gracias a Eric y Stephan) funciona bien desde la línea de comandos, pero no puede actualizar el reloj cuando se coloca /etc/rc.local:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date
Thu Jan 1 00:00:58 UTC 1970
* Stopping NTP server ntpd [ OK ]
* Starting NTP server [ OK ]
Thu Feb 14 18:52:21 UTC 2013
¿Qué estoy haciendo mal?
ACTUALIZACIÓN 2: intenté seguir las pocas sugerencias que surgieron en respuesta a la primera actualización, pero nada parece hacer el trabajo según lo requerido. Esto es lo que probé:
- Reemplace el servidor para
us.pool.ntp.org - Utilice rutas explícitas a los programas.
- Eliminar el
ntpservicio por completo y dejarlo solosudo ntpdate ...enrc.local - Eliminar el
sudodel comando anterior enrc.local
Usando lo anterior, la máquina todavía comienza en 1970. Sin embargo, cuando se hace esto desde la línea de comando una vez que se inicia sesión (vía ssh), el reloj se actualiza tan pronto como invoco ntpdate.
Lo último que hice fue eliminar eso rc.localy hacer una llamada a ntpdatemi .bashrcarchivo. Esto actualiza el reloj como se esperaba, y obtengo la hora actual real una vez que el símbolo del sistema está disponible.
Sin embargo , esto significa que si la máquina está encendida y ningún usuario ha iniciado sesión, entonces el tiempo nunca recibe actualizaciones. Por supuesto, puedo reinstalar el ntpservicio para que al menos el reloj se actualice a los pocos minutos del inicio, pero luego volvemos al punto 1.
Entonces, ¿hay alguna razón por la que colocar el ntpdatecomando rc.localno realice la tarea requerida, mientras que hacerlo .bashrcfunciona bien?

ntpdate -s ntp.ubuntu.com[1]: askubuntu.com/a/81301/130162sudoen los archivos /etc/rc.locale ... ya se ejecutan como root.timedatectl, pero askubuntu.com/questions/832646/…Respuestas:
Probablemente el
ntpservicio se esté ejecutando, por esontpdateno se puede abrir el socket (puerto 123 UDP) y conectarse al servidor ntp.Probar desde la línea de comando:
Si desea poner esto en
/etc/rc.localuso lo siguiente:fuente
servicedesde rc.local y cron pero logré solucionarlo usando /etc/init.d/xxx en su lugar. En realidad, creo que no tiene que dar la ruta completantpdate, me gusta usar rutas completas en los scripts solo para asegurarme de que se encuentre el archivo correcto.us.pool.ntp.orges más sensible.-uopción, no necesita detener el servicio ntp:sudo ntpdate -u time.nist.govEn lugar de ntpdate (que está en desuso ), use
El
-gqle dice al demonio ntp que corrija la hora independientemente del desplazamiento (g) y salga inmediatamente (q) después de configurar la hora.fuente
ntpdmanual, no estoy seguro de cómo esto obliga a una actualización.sudo ntpd -gqno sale! Estoy en 14.10 y tengo que CTRL + C para continuar ... ¿o cuánto tiempo se supone que debe tomar?sudo service ntp...asudo service ntpd....Use sntp para configurar la hora de inmediato. Por ejemplo:
Los números después de -s pueden ser cualquier servidor de hora ntp, ese es NIST en Ft. Collins, Colorado.
fuente
Como otros han señalado, la mejor solución es indicarle a ntpd que ignore el umbral de pánico, que es 1000 segundos por defecto. Puede configurar el umbral de pánico de dos maneras:
/etc/default/ntpy asegúrese de que la opción -g esté presente.tinker panic 0en la parte superiorHasta ahora, esto es esencialmente lo que otros han recomendado, sin embargo, hay un paso más que creo que debería tomar. Instale el programa fake-hwclock:
Con fake-hwclock instalado, su máquina no arrancará pensando que es 1970 nuevamente. Cuando su máquina se inicia, configurará su reloj con la marca de tiempo que escribió fake-hwclock durante el último reinicio / apagado. Esto significa que puede tener un reloj algo correcto en caso de que haya problemas de red al arrancar.
fuente
-gparecía no hacer nada por mí (en la línea de comando, no tengo/etc/default/ntp), pero agregandotinker panic 0antp.conftrabajadotinker panic 0definitivamente parece haber funcionado sin embargo.ntpdate es un programa diferente del net dameon. NTPDate probablemente está produciendo un error al arrancar porque ntpd se está ejecutando en ese socket.
Desde la línea de comando, ejecute
También puede desinstalar ntpd todos juntos (apt-get remove ntp) y agregar un script cron para usar ntpdate cada hora más o menos.
ACTUALIZAR
El servicio ntp probablemente no tendrá un valor significativo para usted en este sistema, así que elimínelo primero.
Ahora agregue el comando:
a
/etc/rclocalReiniciar. Debería ser bueno en ese punto.
fuente
Use
timedatectl(unidad de servicio systemd) para configurar la hora.ntpes obsoleto.Puede verificar la hora se actualizó leyendo los registros con
journalctl -xe | tailReferencia
man timesyncd.conffuente
si todo lo que quieres hacer es configurar el reloj una vez, simple
fuente
La forma correcta de hacer esto en un sistema Debian / Mint / Ubuntu (u otro sistema derivado de Debian) es tener la línea
en el archivo
Esto garantiza que cuando se inicia ntpd desde el script /etc/init.d/ntp, se ejecuta con la opción "-g", a saber
para permitir que ntpd corrija la hora del sistema cuando faltan más de 1000 s, por ejemplo, cuando la hora del sistema es el 1 de enero de 1970 al inicio porque no hay RTC de hardware.
fuente
/etc/default/ntp, pero el tiempo no estaba sincronizado.tlsdateconfigura el reloj local conectándose de forma segura con TLS a servidores remotos y extrayendo el tiempo remoto del protocolo de enlace seguro. A diferenciantpdate,tlsdateutiliza TCP, por ejemplo, conectarse a un servicio remoto habilitado para HTTPS o TLS, y proporciona cierta protección contra adversarios que intentan proporcionarle información de tiempo maliciosa.fuente
Tenga en cuenta que algunos sistemas actuales basados en Ubuntu ni siquiera usan el servicio NTP de forma predeterminada ahora. En mi máquina Linux Mint 19 (Ubuntu 18.04), el tiempo se mantiene
systemd-timesyncd.Entonces, para obtener una hora actualizada después de que haya perdido la sincronización, simplemente ejecuto
Desde 15.04 Ubuntu usa systemd por defecto. Por lo tanto, los sistemas críticos como el tiempo se administran a través de systemd. Para encontrar qué servicio usa su sistema, ejecute algo como
Para TechJS el 16.04 el servicio fue
ntp. Para mí en Ubuntu 18.04 (Mint 19) el servicio essystemd-timesyncd. Curiosamente, inicié sesión en un servidor 16.04 que tengo y también lo usasystemd-timesyncd.fuente
Intenta usar la
-bopción para pasar el tiempo.fuente
1 Jan 00:04:11 ntpdate[2226]: the NTP socket is in use, exiting. Sin embargo, creo que intenté esto antesrc.localpero no sirvió de nada.ntpdate -b <ipaddress>Bien,
Estoy ejecutando un raspbian (debian wheezy) en mi raspberry pi, que no tiene el hwclock. Me pareció útil escribir un pequeño script y ejecutarlo después de que mi interfaz de Internet esté activa, de modo que estoy seguro de que en el momento en que la red esté disponible, el reloj se actualizará.
Primero verifique que tiene el
ntpdatepaquete ejecutandoDebe agregar lo siguiente en su
/etc/network/interfaces(seguramenteeth0aquí es solo un ejemplo):Y cree el siguiente script en
/usr/local/sbin/update-time.sh(no olvide hacer que sea ejecutablechmod):fuente
Los algoritmos ntpd descartan compensaciones de muestra que exceden los 128 ms, a menos que el intervalo durante el cual ningún [valor absoluto de] compensación de muestra sea inferior a 128 ms exceda los 900s. La primera muestra después de eso, no importa cuál sea el desplazamiento, pasa el reloj a la hora indicada. En la práctica, esto reduce la tasa de falsas alarmas en las que el reloj avanza por error a una incidencia extremadamente baja.
Normalmente, ntpd sale si el desplazamiento excede el límite de cordura, que es 1000 s por defecto. Esto se puede desactivar con la opción -g:
-g Normalmente, ntpd sale si el desplazamiento excede el límite de cordura, que es 1000 s por defecto. Si el límite de cordura se establece en cero, no se realiza ninguna verificación de cordura y cualquier compensación es aceptable. Esta opción anula el límite y permite establecer el tiempo en cualquier valor sin restricción; Sin embargo, esto puede suceder solo una vez. Después de eso, ntpd saldrá si se excede el límite. Esta opción se puede usar con la opción -q.
ambos de http://doc.ntp.org/4.1.0/ntpd.htm
-Jonathan Natale
fuente
Si puede permitirse el tiempo de esperar el tiempo que sea necesario antes de que su sistema se sincronice, puede usar el
ntp-waitcomando:fuente
Si está en systemd, puede usar este comando:
Y luego el tiempo se actualiza en cerca de 10-15 segundos.
Probado en ubuntu mate 16.04
fuente
ntpdy sentpdateejecuta por defecto usando un puerto restringido (UDP 123). Si está detrás de un firewall,ntpdnunca funcionará, perontpdatepuede funcionar con la-uopción. Por ejemplo:ntpdate -u 0.ubuntu.pool.ntp.orgontpdate -u time.nist.govambos deberían funcionar bien.fuente