Qual é o comando para atualizar data e hora da Internet

132

Qual é o comando para atualizar a data e hora da Internet? Existe algum aplicativo que me permita fazer isso a partir da interface do usuário e não do shell?

Vikramjeet
fonte
Você consegue identificar qual versão do Ubuntu você está usando?
David6
1
Você precisa de um tempo extremamente preciso? (Se sim, você precisa se familiarizar com o ntpq e escolher servidores de horário). Se você deseja que seu tempo seja (aprox.) Correto, tente: Configurações do sistema >> Hora e data e verifique se ' Definir hora ' está definido como ' Automaticamente da Internet '.
David6
Se você quiser constantemente extremamente preciso, instale ntpd. Este é um pequeno processo que é executado em segundo plano e ajusta o tempo constantemente, em vez de rajadas / saltos, mas consumirá um pouco de seus recursos.
strugee
1
Esta questão é de importância crítica hoje em dia. Ultimamente, tornou-se muito complicado: alguns PCs usam o chrony ou o ntpd, sempre encontram um motivo para NÃO atualizar a hora (o relógio está muito errado , ganha problemas relacionados à inicialização dupla, o ntp também pode se recusar a confiar em fontes de relógio que não possuem Internet). Além disso, se você possui um PC com Internet, mas com um relógio errado, como agora os navegadores e sites o forçam a usar HTTPS, ele bloqueará quando o relógio estiver errado e você não pode nem pesquisar no google como consertá-lo! Seria bom se houvesse uma resposta que abordasse todos os casos. "Acerte o relógio manualmente" é o mais confiável agora ...
bct

Respostas:

144

Você pode fazer isso com, por exemplo sudo ntpdate time.nist.gov. Outros servidores incluem time.windows.cometc.

http://www.pool.ntp.org/ lista servidores de horário em todo o mundo.

Anônimo
fonte
5
Estou recebendo um errothe NTP socket is in use, exiting
friederbluemle
7
@friederbluemle Como dito nesta resposta , você deve interromper o serviço NTP sudo service ntp stop. Em seguida, você pode usar o comando sugerido na resposta e, finalmente, você pode reiniciar o serviço com:sudo service ntp start
Michele
Isso funciona, mas não atualiza o relógio na barra de tarefas automaticamente.
posfan12
4
Eu recebo o erro "ntpdate [15806]: nenhum servidor adequado para sincronização encontrado". A segunda resposta abaixo usando o google.com funciona melhor
Kim Stacks
7
ntpdate: comando não encontrado
rogerdpack 17/05
134

Este é um código pequeno e agradável que encontrei para atualizar seu tempo, caso você tenha problemas com ntp:

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
Shrukul Habib
fonte
Ótima solução!
Farid Rn
Muito bom, funcionou para mim.
Janderson Silva
8
Essa deve ser a resposta aceita!
brijs
Este trecho chegou ao meu arsenal! ;)
Dave Amit
2
Isso é bom, mas geralmente fica entre 8 e 50 ms, pois não é sincronizado por si só.
Nonny Moose
48

A partir de 2018, com um novo Ubuntu 16.04 LTS instalado, a execução sudo ntpdate time.nist.govfornece:

sudo: ntpdate: command not found

Isso ocorre porque ( fonte oficial ):

ntpdateé considerado obsoleto em favor timedatectle, portanto, não é mais instalado por padrão.

Em vez disso, faça isso para forçar a sincronização agora:

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

No meu caso, eu estava executando um Ubuntu em uma caixa virtual e salvou o estado da máquina. Quando iniciei novamente a instância, ela não sincronizou automaticamente o relógio, pois não havia nenhum evento de inicialização para acionar a sincronização. Então, o tempo ainda estava mostrando o que era a última vez que eu estava executando a caixa virtual.

Do utilizador
fonte
Acabei de atualizar para biônico e notei que o ntpdate não estava mais funcionando, e o timedatectl funcionou para mim.
Kapad
1
Também funcionou para mim no Ubuntu 18.04.
Kievlaluno
Se o horário não mudar, verifique seu fuso horário apenas timedatectl. Se estiver errado, consulte a --helpseção para o comando sobre como alterá-lo.
22418 Brad Turek
1
Boa captura para o Virtual Box. Economizou muita dor de cabeça na depuração!
Mohd Abdul Mujib 11/11
14

A execução deste comando em um terminal deve fazer o truque

sudo dpkg-reconfigure tzdata

Você pode adicionar fusos horários extras graficamente, eu acho, clicando no relógio e passando por suas opções.

Jayo
fonte
Os fusos horários não são realmente o mesmo que o tempo (preciso). Mas também não está muito claro o que Vikramjeet estava perguntando.
David6
Qual é o comando para atualizar hora e data da Internet é a pergunta, sudo dpkg-reconfigure tzdata é a resposta, então o que dá? o comentário sobre os fusos horários, está relacionada com a única coisa que eu sei que é possível graficamente
Jayo
Eu assumi que, graficamente, eles significavam um método gráfico (ou 'GUI'), e NÃO geográfico (ou mundial).
David6
eu também, não estou ciente de uma maneira de atualizar a data e hora via rede graficamente , então uso o terminal, o que sei fazer graficamente é configurar fusos horários, a parte sobre fusos horários foi a minha centavos sobre o que pode ser feito para afetar o tempo de maneira gráfica , tanto quanto eu sabia, estou entendido agora?
21411 Jayo
12

É muito fácil configurar a partir da linha de comando: https://help.ubuntu.com/lts/serverguide/NTP.html A partir desse link:

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: ntpdate -s ntp.ubuntu.com

Aqui está o exemplo da GUI https://help.ubuntu.com/community/UbuntuTime#Time_Synchronization_using_NTP

Daimon
fonte
6
Por favor, não use links para outros sites. Quando eles desaparecem, o mesmo ocorre com as informações que você postou. Evite que a "podridão do link" aconteça, respondendo com o conteúdo do link (e dê crédito onde o crédito é devido).
Rinzwind
4

A maioria aqui não funcionará, pois o ntp substituirá suas configurações em segundos.

Você precisa desativar o NTP primeiro. No ubuntu, isso é feito como:

    # Disable ntp
    sudo timedatectl set-ntp 0

Então você pode fazer:

    # Set software clock 
    sudo date --set="2018-04-01 22:22:22"
    # Sync with hardware clock 
    sudo hwclock --systohc
momomo
fonte
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"

ou

date -s `curl -I 'https://startpage.com/' 2>/dev/null | grep -i '^date:' | sed 's/^[Dd]ate: //g'`
Tyler
fonte
1
A maneira padrão de definir a data e a hora conectando-se aos servidores de horário via ntp. Por que você está usando conexões https para fazer isso?
Xiota 14/05
1
//, às vezes é bom ter uma alternativa à maneira padrão, eu acho.
Nathan Basanese
2
Meu ISP estava bloqueando meu servidor NTP
Tyler
1

Você precisa instalar o ntppacote. As configurações de data / hora estão disponíveis nas configurações do sistema. Aqui estão mais algumas informações.

tohuwawohu
fonte
2
O link está morto ... Como dito por Rinzwind "Por favor, não use links para outros sites. Quando eles desaparecem, o mesmo ocorre com as informações que você postou. Evite que a 'podridão do link' aconteça, respondendo ao conteúdo do link (e dê crédito onde o crédito é devido) ". Obrigado
Michele
1

Existe algum aplicativo que me permita fazer isso a partir da interface do usuário e não do shell?

Estou usando o 17.10 e posso ir para Configurações (no menu superior direito da interface do usuário)> Detalhes> Data e hora. No meu caso, meu sistema não estava atualizando da Internet, apesar de "Data e hora automáticas" estarem definidas como "LIGADAS". Eu simplesmente mudei para "OFF", esperei um segundo e depois mudei de volta para "ON". Ele pegou a data e hora atuais e eu estava pronto para ir.

Jason W. Pegg
fonte
0

Obrigado ao Twiglets [para roteadores AsusWRT / Merlin]

Aqui está uma alternativa que define a data !!! [-s opção]. Imprime a 'Data' recuperada e a 'Data' definida para comparação.

No AsusWRT / Merlin, a única coisa estranha é que a data recuperada é ".... GMT" e o utilitário de data define a hora correta, mas a altera para "... DST" O ambiente tem TZ definido como "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'
Tyler
fonte