Como o Ubuntu sincroniza o tempo sem o ntp?

39

Ao clicar em "Configurações do sistema -> Hora e data -> Automaticamente da Internet", posso sincronizar a hora da Internet.

No entanto, acho que não tenho um ntpddaemon (ele nem está instalado). Então, como funciona a sincronização?

n3v3rm03
fonte
6
Observe que essa interface é, IMHO, enganosa. Ele deve ser um botão e não um comutador, pois dispara uma ação de uma só vez, usando ntpdate: --- você precisa instalar manualmente ntppara sincronizar continuamente o tempo com a Internet. Eu relatei isso em bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/…
Rmano
Não tenho certeza de que isso seja enganoso. Fiquei com a impressão de que o ntpdate era executado uma vez a cada inicialização, a menos que essa opção estivesse desabilitada. Alguém pode confirmar?
thomasrutter
no Kubuntu 16.04, o widget de relógio nem mostra a Automatically from the Internetopção ou qualquer coisa relacionada.
kmonsoor 13/10/16

Respostas:

38

Isso é feito sincronizando com a ntpdateferramenta.

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.

Você pode fazer isso com

sudo ntpdate TIME-SERVER

As listas TIME-SERVER podem ser encontradas aqui

Maythux
fonte
6
mas a questão é, ntpdate não é instalado por padrão no Ubuntu, por isso, como é que o Ubuntu sincronização do tempo?
John Allard
2
Nota: esta resposta aceita está muito desatualizada. Nas versões recentes do Ubuntu (16.04+), o timedatectl é usado em vez do ntpdate. timedatectl controla o serviço timesyncd do systemd.
Corey Goldberg
Sim, esta resposta está fora de tópico. Não é "como sincronizar o tempo sem ntpd + ntpq", mas "como o UBUNTU faz isso sem nenhuma das opções acima (ntpdate / ntpq). Encontrei essa pergunta logo após perceber que meu relógio está sincronizado e esperava que estivesse desligado por pelo menos algumas dúzias de segundos (Ubuntu 18.04) .Eu também me lembro do inferno que é o NTPd, quando ele se recusa a sincronizar o tempo "muito longe" etc. etc. E agora - o relógio está sincronizado! Magic.
Tomasz Gandor
21

O Ubuntu sincroniza com o ntpdateutilitário uma vez cada vez que a conexão de rede é ativada (o que geralmente acontece quando você inicializa).

Esse utilitário é instalado por padrão, mas é executado apenas quando o Ubuntu o chama e não permanece em execução em segundo plano como um daemon.

A instalação do ntppacote instala o daemon NTP. O daemon ntp permite que o tempo seja sincronizado continuamente enquanto o sistema está em execução.


Atualização : nas versões recentes do Ubuntu (por exemplo, 16.04) ntpdateé substituída por timedatectl, que sincroniza uma vez na inicialização e quando uma rede é aberta, mas não continua sendo executada em outros momentos. Veja https://help.ubuntu.com/lts/serverguide/NTP.html para mais.

thomasrutter
fonte
4
Não é a cada inicialização, por si só; siga dpkg-query --listfiles ntpdatepara /etc/network/if-up.d/ntpdate.
ændrük
11
Ah, obrigado, então eu acho que é sempre que a interface de rede aparece, o que não será necessariamente cada inicialização para todos.
thomasrutter
ah você tem certeza que isso está instalado por padrão? Estou sentado aqui em uma nova instância do servidor Ubuntu 16.04 e não há nenhum utilitário ntpdate instalado.
John Allard
O ntpdate foi instalado por padrão no 14.04, mas não mais no 16.04, agora é considerado reprovado pelo timedatectlque funciona da mesma forma - é instalado por padrão e sincronizado uma vez na inicialização, mas também quando uma rede é instalada.
thomasrutter
12

Para aqueles com 16.04 LTS time sync parece ser tratado pelo sytemd especificamente "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 é

/etc/systemd/timesyncd.conf

Mais informações aqui: Sincronização de tempo com NTP E timedatectl

MysticRyuujin
fonte
11
Esta é a melhor resposta a partir de agora. O resto é praticamente fora de tópico (exceto os editados, que mencionam systemd-timedatectl).
Tomasz Gandor
2

Observe também que é totalmente possível que exista uma interface front-end para um serviço que não esteja instalado.

Você pode alterar as configurações dessa interface front-end (GUI) conforme desejar, mas se o serviço que realmente executa as tarefas não estiver instalado, nada acontecerá.

Observe, no entanto, que eu acho que o "switch" é válido porque ele diz para fazer a atualização única na inicialização de EACH. (ou não fazê-lo).

A menos que este seja um sistema não conectado à rede ou que exista outro motivo para NÃO ter seu tempo definido para corresponder ao tempo "padrão", eu recomendaria fortemente que você instale o ntpd e o configure e execute corretamente.

sdfgsdfg
fonte
1

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

O Ubuntu vem com o ntpdate como padrão e o executará uma vez no momento da inicialização para configurar seu tempo de acordo com o servidor NTP do Ubuntu. No entanto, é provável que o relógio do sistema mude consideravelmente entre as reinicializações se o tempo entre elas for longo. Nesse caso, faz sentido corrigir a hora ocasionalmente. A maneira mais fácil de fazer isso é fazer com que o cron execute todos os dias.

ntpdate ntp.ubuntu.com
Fadi
fonte
Ou você pode usar ntpd( help.ubuntu.com/lts/serverguide/NTP.html#ntpd ) para manter a sincronização.
Gaurav
Para sua informação, a página que você consultou não está atualizada para 16.04 a partir de agora, portanto, não é muito útil.
kmonsoor
1

Por alguma razão, em 16.04, a resposta de Maythux não funciona imediatamente.

Mas assumir a liderança a partir daí, isso funcionou para mim.

$ sudo ntpdate-debian

Observe que isso requer sudoprivilégios, obviamente.

Sob o capô, ele usa a ntpdateferramenta, diferindo apenas o arquivo de configuração.

ntpdate-debian é idêntico, ntpdate(8) exceto que ele usa a configuração /etc/default/ntpdatepor padrão. O ntpdate define a data e a hora local pesquisando os servidores NTP (Network Time Protocol).

kmonsoor
fonte
16.04 usa systemd, então eu esperaria que ele tivesse um novo comando equivalente para usar.
Rinzwind
@Rinzwind que seria fantástico, é claro. Infelizmente, a página supostamente principal no wiki do Ubuntu não foi atualizada para 16.04. Ele mostra uma mensagem dizendo "Este artigo precisa ser atualizado para incluir as versões mais recentes do Ubuntu".
kmonsoor
Pelo menos em 14.04 sudo ntpdate-debianfaz o mesmo que sudo ntpdate ntp.ubuntu.com. O estranho é por que eles escolheram e aprimoraram este pacote do debian quando lemos is identical to ntpdate(8) except that it uses the configuration in /etc/default/ntpdate by defaulte lemos este arquivo que lemos 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
1

Bem, as versões posteriores do Ubuntu costumam fazer isso usando o chrony, que é uma implementação alternativa do ntp com algumas diferenças:

  1. Alguns dos recursos ntp mais raramente usados ​​não são implementados
  2. Ele tenta lidar bem com a situação em que você tem acesso intermitente à rede - Quando conectado, ele sincroniza o relógio local e rastreia a velocidade com que ele se move. Quando desconectado, ele usa o relógio local, mas ajusta o tempo para permitir como ele geralmente fica à deriva.

Veja https://chrony.tuxfamily.org/ para mais informações.

Mark Phillips
fonte