¿Cómo configurar Ubuntu para sincronizar mi reloj con un servidor horario?

23

Me gustaría que Ubuntu sincronice automáticamente el reloj de mi sistema con un servidor de tiempo al inicio.

Sin embargo, mi PC no está conectada a Internet hasta después de haber iniciado sesión (más 5 - 10 segundos por si acaso).

¿Cómo puedo configurarlo para hacer esto?

Nathan Osman
fuente
2
Aquí ya hay excelentes respuestas que explican cómo instalar ntpd para que su computadora se mantenga continuamente sincronizada con los servidores de hora de Internet, pero solo quería agregar que, de manera predeterminada, Ubuntu sincronizará la hora con ntp.ubuntu.com siempre que su interfaz de red llegue "arriba" (por ejemplo, cuando inicia su computadora). Esto no parece estar sucediendo en su caso debido a la forma en que se conecta a Internet, pero otros lectores no deben suponer que Ubuntu no sincroniza el tiempo sin instalar ntpd.
Aquí hay uno que explica cómo configurarlo en time.nist.gov: askubuntu.com/questions/972799/…
SDsolar

Respuestas:

32

Esto se hace con NTP, para lo cual hay instrucciones disponibles. Básicamente, necesitará instalar un demonio NTP. Parece que hay varias opciones disponibles, pero la "estándar" está en el paquete ntp. De acuerdo con las instrucciones en la página vinculada,

sudo apt-get install ntp

configurará todo para sincronizarse con el servidor NTP de Ubuntu.

EDITAR : me perdí "en el inicio". En general, se recomienda usar ntpd para obtener una sincronización continua entre su sistema y el servidor, pero si realmente solo desea sincronizar una vez, la respuesta de mfisch parece ser lo que está buscando.

David Z
fuente
3
Creo que, en general, sería mejor simplemente tener ntpd siempre ejecutándose y que no se conectara cuando no estaba en línea, eso no es dañino. Dicho esto, mi método también debería funcionar;)
mfisch
Estoy de acuerdo con que se ejecute continuamente.
Nathan Osman el
1
George, solo haz eso. Tenía la esperanza de responder a su pregunta "real" ya que lo más molesto del mundo es hacer una pregunta como esta y que todas las respuestas sean "¿por qué quieres hacer eso?"
mfisch
Para Ubuntu 18.04, se aplican los consejos para instalar ntpd por más tiempo. Por defecto systemd-timesyncd.service sincronizará la hora.
ernstkl
9

Si va a "Sistema-> Administración-> Hora y fecha", obtendrá una GUI para establecer la fecha / hora.

Se proporciona una opción para usar servidores de tiempo. Si lo verifica y NTP no está instalado, le preguntará si desea instalarlo. Simplemente haga clic en "sí" y deje que haga su trabajo :)

Little Jawa
fuente
Olvidé la cosa de "inicio". NTP hace su trabajo regularmente, lo que significa que debe sincronizarse cada vez que esté en línea ... Pero la única forma de asegurarse es utilizar algún tipo de script tal como lo proporciona mfisch. Ahora, para ser honesto: una vez sincronizado, hay pocas posibilidades de que su computadora se estropee en su reloj. Por lo tanto, si usa la sincronización de tiempo predeterminada y deja que se haga en segundo plano, debería ser bueno ir la mayor parte del tiempo, sin tener que hacer nada más.
Little Jawa
¿No está etiquetado como "Hora y fecha"?
Pluma de fuego
@Firefeather: bien puede ser. No tengo una interfaz en inglés, así que no puedo decirlo;)
Little Jawa
Ah, tonto, olvidando la internacionalización. Mi sistema en-us lo etiqueta "Hora y fecha".
Pluma de fuego
6

Puede hacerlo utilizando at y ntpdate . Probablemente ya esté instalado, pero es posible que ntpdate no lo esté. (apt-get install ntpdate).

Primero cree un pequeño script que ejecute ntpdate, llamémoslo update_time.sh.

#!/bin/bash
ntpdate pool.ntp.org

En su archivo .bash_login (que puede necesitar crear) agregue esto:

at -f ~/update_time.sh now + 1 minute

Eso debería hacer lo que quieras. Se puede cambiar el retraso que en los usos sean 5 minutos, 10 minutos, etc.

EDITAR: Me acabo de dar cuenta de que necesitarás ser root para ejecutar ntpdate. Deberá establecer el bit SUID en el script update_time.sh que mencioné. Puede hacerlo ejecutando esto desde el comando (solo necesita ejecutarse una vez):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh
mfisch
fuente
1
iirc No puede establecer suid en scripts .sh.
Broam
¿Puedes hacer el suid en ntpdate directamente entonces? Eso probablemente lograría lo mismo.
mfisch
2
¿Por qué usar at? Y si va a ejecutar automáticamente ntpdate, ¿por qué no simplemente instalar el ntpservicio?
Reinier Post
1
nota: ntpdate ya no está instalado de manera predeterminada en Ubuntu (16.04+) y fue desaprobado en favor de timedatectl. timedatectl controla el servicio timesyncd de systemd, que se usa de manera predeterminada para la sincronización horaria.
Corey Goldberg
0

Desde Ubuntu 16.04 timedatectl / timesyncd (que son parte de systemd) reemplazan la mayoría de ntpdate / ntp. Ver Sincronización horaria .

Es posible que deba activar la sincronización de hora con:

$ sudo timedatectl set-ntp on

Si quieres usar chrony:

  • Si necesita una sincronización de uso único: $ chronyd -q

  • Si necesita una verificación de tiempo de una sola vez, sin configurar el tiempo, use: $ chronyd -Q

  • Para la sincronización continua, la solución recomendada es crony:

cronia (d)

La cronología del demonio NTP calcula la deriva y el desplazamiento del reloj de su sistema y lo ajusta continuamente, por lo que no hay correcciones grandes que puedan conducir a registros inconsistentes, por ejemplo. El costo es un poco de potencia de procesamiento y memoria, pero para un servidor moderno esto generalmente es insignificante. Instalación

Para instalar chrony, desde un indicador de terminal ingrese:

$ sudo apt install chrony

Es posible que también deba activar

sudo timedatectl set-ntp en

Actualización: otro método si lo anterior no funciona es configurar un trabajo cron para que se ejecute$ chronyd -q

JBaczuk
fuente