¿Cómo Ubuntu sincroniza el tiempo sin ntp?

39

Al hacer clic en "Configuración del sistema -> Hora y fecha -> Automáticamente desde Internet" puedo sincronizar la hora desde Internet.

Sin embargo, encuentro que no tengo un ntpddemonio (ni siquiera está instalado). Entonces, ¿cómo funciona la sincronización?

n3v3rm03
fuente
66
Tenga en cuenta que esa interfaz es, en mi humilde opinión, engañosa. Debe ser un botón y no un interruptor, ya que dispara una acción de una sola vez, usando ntpdate--- tienes que instalarlo manualmente ntppara tener una sincronización continua de tiempo con Internet. Lo informé en bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/…
Rmano
No estoy seguro de que sea engañoso. Tenía la impresión de que ejecutaba ntpdate una vez en cada arranque a menos que esta opción estuviera desactivada. ¿Alguien puede confirmar?
thomasrutter
en Kubuntu 16.04, el widget de reloj ni siquiera muestra la Automatically from the Internetopción ni nada relacionado.
kmonsoor

Respuestas:

38

Esto se hace sincronizando con la ntpdateherramienta.

man ntpdate

NAME
       ntpdate - set the date and time via NTP

ntpdate sets the local date and time by polling the Network Time Proto‐
       col (NTP) server(s) given as the server arguments to determine the cor‐
       rect time. It must be run as root on the local host (unless the  option
       -q  is used). A number of samples are obtained from each of the servers
       specified and a subset of the NTP clock filter and selection algorithms
       are  applied  to  select  the best of these. Note that the accuracy and
       reliability of ntpdate depends on the number of servers, the number  of
       polls each time it is run and the interval between runs.

       ntpdate  can  be run manually as necessary to set the host clock, or it
       can be run from the host startup script to set the clock at boot  time.
       This is useful in some cases to set the clock initially before starting
       the NTP daemon ntpd. It is also possible to run  ntpdate  from  a  cron
       script.  However,  it  is important to note that ntpdate with contrived
       cron scripts is no substitute for the NTP daemon, which uses  sophisti‐
       cated  algorithms to maximize accuracy and reliability while minimizing
       resource use. Finally, since ntpdate does not discipline the host clock
       frequency as does ntpd, the accuracy using ntpdate is limited.

Puedes hacerlo con

sudo ntpdate TIME-SERVER

Las listas de TIME-SERVER se pueden encontrar aquí

Maythux
fuente
66
pero la pregunta es, ntpdate no está instalado de manera predeterminada en Ubuntu, entonces, ¿cómo se sincroniza Ubuntu la hora?
John Allard
2
Nota: esta respuesta aceptada está muy desactualizada. En versiones recientes de Ubuntu (16.04+), se utiliza timedatectl en lugar de ntpdate. timedatectl controla el servicio timesyncd de systemd.
Corey Goldberg
Sí, esta respuesta está fuera de tema. No es "cómo sincronizar el tiempo sin ntpd + ntpq", sino "Cómo lo hace UBUNTU sin ninguno de los anteriores (ntpdate / ntpq). Encontré esta pregunta justo después de notar que mi reloj estaba sincronizado, y esperaba que estuviera apagado por al menos unas pocas docenas de segundos (Ubuntu 18.04). También recuerdo el infierno que es el NTPd completo, cuando se niega a sincronizar el tiempo "demasiado lejos", etc. Y ahora, ¡el reloj está sincronizado! Magia.
Tomasz Gandor
21

Ubuntu se sincroniza con la ntpdateutilidad una vez cada vez que aparece la conexión de red (que generalmente ocurre cuando se inicia).

Esta utilidad se instala de manera predeterminada, pero solo se ejecuta cuando Ubuntu la llama y no permanece ejecutándose en segundo plano como un demonio.

Al instalar el ntppaquete, se instala el demonio NTP. El demonio ntp permite que el tiempo se sincronice continuamente mientras el sistema se está ejecutando.


Actualización : en las versiones recientes de Ubuntu (por ejemplo, 16.04) ntpdatese reemplaza por timedatectl, que se sincroniza una vez en el arranque, así como cuando aparece una red, pero no sigue ejecutándose en otros momentos. Consulte https://help.ubuntu.com/lts/serverguide/NTP.html para obtener más información.

thomasrutter
fuente
44
No está en cada arranque, per se; seguir dpkg-query --listfiles ntpdatea /etc/network/if-up.d/ntpdate.
ændrük
1
Ah, gracias, así que supongo que es cada vez que aparece la interfaz de red, que no será necesariamente cada arranque para todos.
thomasrutter
ah ¿estás seguro de que esto está instalado por defecto? Estoy sentado aquí en una nueva instancia del servidor Ubuntu 16.04 y no hay ninguna utilidad ntpdate instalada.
John Allard
ntpdate se instaló de manera predeterminada en 14.04 pero ya no en 16.04, ahora se considera obsoleto por lo timedatectlque funciona de manera similar: se instala de manera predeterminada y se sincroniza una vez en el arranque, pero también cuando aparece una red.
thomasrutter
12

Para aquellos de ustedes con 16.04 LTS, la sincronización de tiempo parece ser manejada por sytemd específicamente "timedatectl"

timedatectl status
Local time: Wed 2016-11-30 17:45:18 CST
Universal time: Wed 2016-11-30 23:45:18 UTC
RTC time: Sun 2016-12-04 06:50:39
Time zone: America/Chicago (CST, -0600)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

Config es

/etc/systemd/timesyncd.conf

Más información aquí: Sincronización de hora con NTP Y timedatectl

MysticRyuujin
fuente
1
Esta es la mejor respuesta a partir de ahora. El resto está prácticamente fuera de tema (excepto los editados, que mencionan systemd-timedatectl).
Tomasz Gandor
2

Tenga en cuenta también que es totalmente posible que exista una interfaz front-end para un servicio que no está instalado.

Puede cambiar la configuración en esa interfaz front-end (GUI) todo lo que desee, pero si el servicio que realmente realiza las tareas no está instalado, no sucederá nada.

Sin embargo, tenga en cuenta que creo que el "interruptor" es válido porque le dice que haga la actualización única en CADA arranque. (o no hacerlo).

A menos que este sea un sistema no conectado a la red, o haya alguna otra razón primordial para NO configurar su hora para que coincida con la hora "estándar", le recomiendo encarecidamente que instale ntpd, que lo configure y ejecute correctamente.

sdfgsdfg
fuente
1

Consulte: https://help.ubuntu.com/community/UbuntuTime

Ubuntu viene con ntpdate como estándar, y lo ejecutará una vez en el momento del arranque para configurar su tiempo de acuerdo con el servidor NTP de Ubuntu. Sin embargo, es probable que el reloj de un sistema se desplace considerablemente entre reinicios si el tiempo entre reinicios es largo. En ese caso, tiene sentido corregir el tiempo ocasionalmente. La forma más fácil de hacer esto es hacer que cron lo ejecute todos los días.

ntpdate ntp.ubuntu.com
Fadi
fuente
O puede usar ntpd( help.ubuntu.com/lts/serverguide/NTP.html#ntpd ) para mantener la sincronización.
Gaurav
Para su información, la página que usted ref.ed no está actualizada para 16.04 a partir de ahora, por lo tanto, no es muy útil.
kmonsoor
1

Por alguna razón, el 16.04, la respuesta de Maythux no funciona de inmediato.

Pero tomar la delantera desde allí, esto funcionó para mí.

$ sudo ntpdate-debian

Tenga en cuenta que requiere sudoprivilegios, obviamente.

Debajo del capó, utiliza la ntpdateherramienta, que difiere solo del archivo de configuración.

ntpdate-debian es idéntico, ntpdate(8) excepto que utiliza la configuración /etc/default/ntpdatede forma predeterminada. ntpdate establece la fecha y hora local al sondear los servidores de Protocolo de hora de red (NTP).

kmonsoor
fuente
16.04 usa systemd, por lo que esperaría que tuviera un nuevo comando equivalente para usar.
Rinzwind
@Rinzwind eso sería fantástico, por supuesto. Desafortunadamente, la página supuestamente principal en el wiki de Ubuntu no está actualizada para 16.04. Muestra un mensaje que dice "Este artículo necesita actualización para incluir las últimas versiones de Ubuntu".
kmonsoor
Al menos en 14.04 sudo ntpdate-debianhace lo mismo que sudo ntpdate ntp.ubuntu.com. Lo extraño es ¿por qué eligieron y modificaron este paquete de Debian cuando lo leímos is identical to ntpdate(8) except that it uses the configuration in /etc/default/ntpdate by defaulty al leer este archivo lo leímos NTPDATE_USE_NTP_CONF=yes # List of NTP servers to use (Separate multiple servers with spaces.) # Not used if NTPDATE_USE_NTP_CONF is yes. NTPSERVERS="ntp.ubuntu.com"?
útil el
1

Bueno, las versiones posteriores de Ubuntu a menudo lo hacen usando chrony, que es una implementación alternativa de ntp con algunas diferencias:

  1. Algunas de las funciones ntp más raramente utilizadas no se implementan
  2. Intenta hacer frente a la situación en la que tiene acceso intermitente a la red: cuando está conectado, sincroniza el reloj local y rastrea la velocidad a la que se desplaza. Cuando se desconecta, usa el reloj local, pero ajusta el tiempo para permitir la forma en que generalmente se desplaza.

Consulte https://chrony.tuxfamily.org/ para obtener más información.

Mark Phillips
fuente