O Ubuntu se ajustará automaticamente ao segundo salto no final do ano (2016)?

43

A BBC relata:

Um segundo extra será adicionado aos relógios do mundo na véspera de Ano Novo para permanecer sincronizado com a rotação da Terra.

Isso significa que eu tenho que fazer qualquer coisa para que minha máquina Ubuntu acompanhe isso ou ela se ajustará automaticamente para não demorar um segundo?

Kaz Wolfe
fonte
2
Você pode desfrutar este vídeo (que também discutir segundos bissextos) youtube.com/watch?v=-5wpm-gesOY
Thorbjørn Ravn Andersen
1
@ ThorbjørnRavnAndersen Oh, esse é Tom Scott!
Ismael Miguel

Respostas:

34

Se a sua máquina Ubuntu ouvir NTP e sincronizar a hora com a Internet, o sistema se ajustará automaticamente à diferença de tempo.

Embora o seu computador não esteja necessariamente ciente do fato de que ocorreu um segundo, ele capturará e registrará o evento conforme os servidores NTP promoverem a mudança na Internet.

Se você não acha que o segundo extra está sendo adicionado, pode forçar uma atualização usando o seguinte comando:

sudo ntpdate -s pool.ntp.org

Isso executará automaticamente a localização geográfica para fornecer a você um servidor próximo (reduzindo o erro de latência) e o Ubuntu ajustará seu fuso horário (por isso, se o servidor estiver em um fuso horário diferente, tudo ficará bem). Como alternativa, você pode usar ntp.ubuntu.com.

Observe que, se você tiver muito azar, nenhum dos servidores de tempo que você está usando lidará com o segundo corretamente. É improvável, mas possível. Recomenda-se a verificação manual de uma fonte boa conhecida (rádio analógico, possivelmente time.is ).


Como alternativa, se você estiver em uma versão moderna do Ubuntu, existe um utilitário interno chamado timedatectl. Por padrão, isso é executado uma vez automaticamente na inicialização. Portanto, uma reinicialização rápida pode forçar uma sincronização, se necessário.

Kaz Wolfe
fonte
1
No Reino Unido, usar time.nist.gov ainda funciona. O Ubuntu ajusta o que informa para o meu fuso horário. Presumo que o mesmo é verdade para todos os fusos horários
Tim
2
@ Tim Sim, mas a sincronização com um servidor nos EUA tem uma latência mais alta = taxa de erro mais alta ... então funciona, mas o resultado final é menos preciso do que com o uso de um servidor mais próximo.
Bakuriu 01/01
1
Tente em pool.ntp.orgvez disso; isso sempre deve pegar algo relativamente próximo a você.
Michael Hampton
3
Esta resposta é problemática. 1.) Se você tiver muito azar, nenhum dos servidores de tempo que você usará lidará corretamente com o segundo. É improvável, mas possível. 2.) Se ntpdestiver em execução, executar ntpdatesimultaneamente irá confundi-lo. Melhor parar com isso primeiro. Melhor ainda, não corra ntpdate. 3.) Os servidores de horário do NIST não precisam de tráfego extra do Stack Exchange; ntp.ubuntu.comou pool.ntp.orgseria melhor. 4.) O Reino Unido realmente usa uk.pool.ntp.org, mas pool.ntp.orgfará a geolocalização de qualquer maneira.
precisa saber é o seguinte
Eu esqueci um. 5.) Se você estiver executando ntpdatecontra servidores de horário aleatório e tiver muito azar novamente, usará um que também falhou ao lidar corretamente com o segundo! O pool NTP desativa esses servidores rapidamente, mas não instantaneamente. E servidores governamentais importantes não são melhores. (Embora eu acho que os NIST foram desta vez.)
Matt Nordhoff
17

Os segundos bissextos são tratados automaticamente pelo kernel do Linux, nenhuma reinicialização ou sincronização NTP é necessária para manter o tempo real. Se você olhar no log do sistema, verá algo semelhante a

[263284.397894] Clock: inserting leap second 23:59:60 UTC

Como o 23:59:60horário do Linux não é válido, o relógio chegará 00:00:00e voltará para 23:59:59. Quaisquer objetos criados durante esse segundo (arquivos semelhantes) podem ser datados inconsistentemente.

No que diz respeito ao tempo do Linux (ao contrário do tempo real), não existem segundos bissextos:

# date -d "2016-12-31 23:59:59" +%s
1483225199
# date -d "2017-01-01 00:00:00" +%s
1483225200
Dmitry Grigoryev
fonte
2
Meus registros parecem confirmar esta resposta. Recentemente, corri dmesg | grep 'leap second'na minha máquina 16.04 principal e ela mostrou [1153894.866672] Clock: inserting leap second 23:59:60 UTC. Isso, apenas com números diferentes no início, também foi mostrado na minha VM mínima 16.04, instalada a partir da mini.isoqual eu uso para teste. Esse sistema mínimo não está em ntpdexecução, nem possui um dos pacotes ntpouopenntpd .
Eliah Kagan 01/01
2
@EliahKagan Certamente o kernel não possui uma lista de todos os segundos bissextos futuros codificados. O kernel possui a lógica para inserir o segundo em salto, mas algo deve dizer ao kernel que um segundo em salto deve ser inserido. Eu não sei de nada além do NTP que pode dizer ao kernel para inserir um segundo. Observe que se o kernel já tiver sido instruído a inserir um segundo de salto, a desinstalação do NTP sem reiniciar deixará o kernel em um estado em que ele será inserido.
precisa saber é
1
@kasperd Eu concordo com o seu raciocínio geral, mas acho que o NTP nunca foi instalado nesse sistema, que eu configurei apenas alguns (embora mais de um) dias antes. Duas possibilidades me vêm à mente. Esta é uma máquina virtual da VMware e, embora eu não tenha instalado nenhum driver da VMware, acredito que o Ubuntu já tenha alguns. Esse driver pode ter descoberto o segundo salto da máquina host? Além disso, espero que o NTP esteja envolvido durante a instalação, embora não tenha certeza de como isso foi feito para funcionar nas reinicializações. Eu acho que mini.isoele tem NTP e o debian-installer o usa.
Eliah Kagan 01/01
1
@EliahKagan, eu não verifiquei, mas o cliente ntp padrão pode ser chrony.
Carsten S
2
@CarstenS Parece que o systemd-timesyncd (8) está sincronizando o relógio do meu sistema mínimo. Eu não tinha pensado nisso e descobri por semi-acidente: grep -RPis '(?<!mou)ntp' /var/logrevelou essas 14 linhas de syslog , mostrando as sincronizações de tempo de um host que por acaso tem ntpem seu nome. Em retrospectiva, faz sentido que o serviço misterioso que eu nunca soube que tinha era parte do systemd. (Btw, bom ponto sobre chrony, que eu não tinha verificado para qualquer um;. Ele não está instalado, embora)
Elias Kagan