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.local
archivo:
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 tar
y 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
ntp
servicio por completo y dejarlo solosudo ntpdate ...
enrc.local
- Eliminar el
sudo
del 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.local
y hacer una llamada a ntpdate
mi .bashrc
archivo. 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 ntp
servicio 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 ntpdate
comando rc.local
no realice la tarea requerida, mientras que hacerlo .bashrc
funciona bien?
ntpdate -s ntp.ubuntu.com
[1]: askubuntu.com/a/81301/130162sudo
en los archivos /etc/rc.locale ... ya se ejecutan como root.timedatectl
, pero askubuntu.com/questions/832646/…Respuestas:
Probablemente el
ntp
servicio se esté ejecutando, por esontpdate
no 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.local
uso lo siguiente:fuente
service
desde 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.org
es más sensible.-u
opción, no necesita detener el servicio ntp:sudo ntpdate -u time.nist.gov
En lugar de ntpdate (que está en desuso ), use
El
-gq
le dice al demonio ntp que corrija la hora independientemente del desplazamiento (g
) y salga inmediatamente (q
) después de configurar la hora.fuente
ntpd
manual, no estoy seguro de cómo esto obliga a una actualización.sudo ntpd -gq
no 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/ntp
y asegúrese de que la opción -g esté presente.tinker panic 0
en 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
-g
parecía no hacer nada por mí (en la línea de comando, no tengo/etc/default/ntp
), pero agregandotinker panic 0
antp.conf
trabajadotinker panic 0
definitivamente 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/rclocal
Reiniciar. Debería ser bueno en ese punto.
fuente
Use
timedatectl
(unidad de servicio systemd) para configurar la hora.ntp
es obsoleto.Puede verificar la hora se actualizó leyendo los registros con
journalctl -xe | tail
Referencia
man timesyncd.conf
fuente
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.tlsdate
configura 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
,tlsdate
utiliza 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
-b
opció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.local
pero 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
ntpdate
paquete ejecutandoDebe agregar lo siguiente en su
/etc/network/interfaces
(seguramenteeth0
aquí 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-wait
comando: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
ntpd
y sentpdate
ejecuta por defecto usando un puerto restringido (UDP 123). Si está detrás de un firewall,ntpd
nunca funcionará, perontpdate
puede funcionar con la-u
opción. Por ejemplo:ntpdate -u 0.ubuntu.pool.ntp.org
ontpdate -u time.nist.gov
ambos deberían funcionar bien.fuente