¿Cuál es el comando para actualizar la hora y la fecha desde internet?


133

¿Cuál es el comando para actualizar la hora y la fecha desde Internet? ¿Hay alguna aplicación que me permita hacerlo desde su interfaz de usuario en lugar de hacerlo desde el shell?


¿Puedes identificar qué versión de Ubuntu estás usando?
david6

1
¿Necesita un tiempo extremadamente preciso? (Si es así, debe familiarizarse con ntpq y elegir servidores de tiempo). Si solo desea que su hora sea (aproximadamente) correcta, intente: Configuración del sistema >> Hora y fecha , y verifique que ' Establecer la hora ' esté configurado en ' Automáticamente desde Internet '.
david6

Si quieres constantemente extremadamente preciso, instálalo ntpd. Este es un pequeño proceso que se ejecuta en segundo plano y ajusta el tiempo constantemente en lugar de ráfagas / saltos, pero tomará un poco de sus recursos.
Strugee


1
Esta pregunta es de importancia crítica hoy en día. Últimamente se ha vuelto muy complicado: algunas PC usan chrony o ntpd, siempre encuentran una razón para NO actualizar la hora (el reloj está demasiado mal , gana problemas relacionados con el arranque dual, ntp también puede negarse a confiar en las fuentes de reloj que no tienen Internet). Además, si tiene una PC con Internet, pero tiene un reloj equivocado, ya que ahora los navegadores y los sitios web lo obligan a usar HTTPS, se bloqueará ya que su reloj está mal, ¡y ni siquiera puede buscar en Google cómo solucionarlo! Sería bueno si hubiera una respuesta que aborde todos los casos. "Configurar el reloj a mano" es el más confiable ahora ...
bct

Respuestas:


145

Puede hacerlo con, por ejemplo sudo ntpdate time.nist.gov. Otros servidores incluyen time.windows.com, etc.

http://www.pool.ntp.org/ enumera los servidores horarios de todo el mundo


55
Estoy recibiendo un errorthe NTP socket is in use, exiting
friederbluemle

77
@friederbluemle Como se dijo en esta respuesta , debe detener el servicio ntp sudo service ntp stop. Luego puede usar el comando sugerido en la respuesta y finalmente puede reiniciar el servicio consudo service ntp start
Michele

Esto funciona, pero no actualiza el reloj en la barra de tareas automáticamente.
posfan12

44
Aparece el error "ntpdate [15806]: no se encontró ningún servidor adecuado para la sincronización". La segunda respuesta a continuación usando google.com funciona mejor
Kim Stacks,

77
ntpdate: comando no encontrado
rogerdpack

134

Este es un pequeño código que encontré para actualizar su tiempo en caso de que tenga problemas con ntp:

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

Buena solución!
Farid Rn

Muy bien, funcionó para mí.
Janderson Silva

8
¡Esta debería ser la respuesta aceptada!
brijs

¡Este fragmento llegó a mi arsenal! ;)
Dave Amit

2
Esto es bueno, pero generalmente estará entre 8 y 50 ms atrás ya que no se sincroniza per se.
Nonny Moose

48

A partir de 2018 con un Ubuntu 16.04 LTS recién instalado, la ejecución sudo ntpdate time.nist.govda:

sudo: ntpdate: command not found

Esto es porque ( fuente oficial ):

ntpdatese considera obsoleto a favor timedatectly, por lo tanto, ya no está instalado de forma predeterminada.

En su lugar, haga esto para forzar que la sincronización ocurra ahora:

sudo timedatectl set-ntp off
sudo timedatectl set-ntp on

En mi caso, estaba ejecutando un Ubuntu en una caja virtual y había guardado el estado de la máquina, por lo que cuando volví a iniciar la instancia, no sincronizó automáticamente el reloj ya que no hubo un evento de arranque para activar la sincronización. Así que el tiempo seguía mostrando lo que era la última vez que estaba ejecutando la caja virtual.


Acabo de actualizarme a bionic y noté que ntpdate ya no funcionaba, y timedatectl funcionó para mí.
kapad

1
También funcionó para mí, en Ubuntu 18.04.
kiamlaluno

Si la hora no cambia, verifique su zona horaria con solo timedatectl. Si está mal, consulte la --helpsección del comando sobre cómo cambiarlo.
Brad Turek

1
Buena captura para la caja virtual. ¡Ahorré mucho dolor de cabeza de depuración!
Mohd Abdul Mujib

14

Ejecutar este comando en una terminal debería hacer el truco

sudo dpkg-reconfigure tzdata

Puede agregar zonas horarias adicionales gráficamente, creo, haciendo clic en el reloj y revisando sus opciones.


Las zonas horarias no son realmente lo mismo que la hora (precisa). Pero tampoco está muy claro qué preguntaba Vikramjeet .
david6

¿Cuál es el comando para actualizar la fecha y la hora desde Internet? La pregunta es sudo dpkg-reconfigure tzdata, ¿qué da? el comentario sobre las zonas horarias está relacionado con lo único que sé que es posible gráficamente
Jayo

Supuse que gráficamente significaban un método gráfico (o 'GUI'), y NO geográfico (o mundial).
david6

yo también, no conozco una manera de actualizar la fecha y la hora a través de la red gráficamente , así que utilizo el terminal, lo que sé hacer gráficamente es configurar zonas horarias, la parte sobre las zonas horarias eran mis dos centavos sobre lo que se puede hacer para afectar el tiempo de manera gráfica , hasta donde yo sé, ¿me entienden ahora?
Jayo

12

Es muy fácil de configurar desde la línea de comandos: https://help.ubuntu.com/lts/serverguide/NTP.html Desde ese enlace:

Ubuntu viene con ntpdate como estándar, y lo ejecutará una vez al momento del arranque para configurar su tiempo de acuerdo con el servidor NTP de Ubuntu: ntpdate -s ntp.ubuntu.com

Aquí hay un ejemplo de GUI https://help.ubuntu.com/community/UbuntuTime#Time_Synchronization_using_NTP


66
Por favor, no use enlaces a otros sitios. Cuando desaparecen, también lo hace la información que publicaste. Evite que se produzca la 'rotura del enlace' respondiendo con el contenido del enlace (y otorgue crédito cuando sea necesario).
Rinzwind

4

La mayoría de aquí no funcionará, ya que ntp anulará su configuración en cuestión de segundos.

Primero debe deshabilitar NTP. En ubuntu se hace como:

    # Disable ntp
    sudo timedatectl set-ntp 0

Entonces puedes hacer:

    # Set software clock 
    sudo date --set="2018-04-01 22:22:22"
    # Sync with hardware clock 
    sudo hwclock --systohc

3
dateFromServer=$(curl -v --silent https://google.com/ 2>&1 \
   | grep Date | sed -e 's/< Date: //'); date +"%d%m%Y%H%M%S" -d "$dateFromServer"

o

date -s `curl -I 'https://startpage.com/' 2>/dev/null | grep -i '^date:' | sed 's/^[Dd]ate: //g'`

1
La forma estándar de establecer la fecha y la hora mediante la conexión con servidores de hora a través de ntp. ¿Por qué estás usando conexiones https para hacer esto?
xiota

1
//, a veces es bueno tener una alternativa a la forma estándar, supongo.
Nathan Basanese

2
Mi ISP estaba bloqueando mi servidor NTP
Tyler

1

Necesitas instalar el ntppaquete. La configuración de fecha / hora está disponible en la configuración del sistema. Aquí hay más información.


2
El enlace está muerto ... Como dijo Rinzwind "Por favor, no use enlaces a otros sitios. Cuando desaparezcan, también desaparecerá la información que publicó. Evite que se produzca 'rotura de enlaces' respondiendo con el contenido del enlace (y dé crédito donde se debe el crédito) ". Gracias
Michele

1

¿Hay alguna aplicación que me permita hacerlo desde su interfaz de usuario en lugar de hacerlo desde el shell?

Estoy usando 17.10 y puedo ir a Configuración (desde el menú superior derecho en la interfaz de usuario)> Detalles> Fecha y hora. En mi caso, mi sistema no se estaba actualizando desde Internet a pesar de que "Fecha y hora automáticas" estaba configurado como "ACTIVADO". Simplemente lo cambié a "APAGADO", esperé un segundo, luego lo cambié a "ENCENDIDO". Recogió la fecha y hora actuales y estaba listo para ir.


0

Gracias a Twiglets [Para AsusWRT / Merlin Routers]

¡Aquí hay una alternativa que sí marca la fecha! [-s opción]. Imprime la 'Fecha' que recupera y la 'Fecha' que se establece para la comparación.

En AsusWRT / Merlin, lo único que es extraño es que la fecha recuperada es ".... GMT" y la utilidad de fecha establece la hora correcta pero la cambia a "... DST" El entorno tiene TZ configurado a "GMT"

datetext=$(curl -I 'https://1.1.1.1/' 2>/dev/null | grep "Date:" |sed 's/Date: [A-Z][a-z][a-z], //g'| sed 's/\r//') ; echo "Date Retrieved = $datetext" ; echo -n "Date set = " ; date -s "$datetext" -D'%d %b %Y %T %Z'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.