Como definir hora e data na Internet?


35

Como recupero a data da Internet e acerto o relógio do meu computador, na linha de comando?


3
Eu não entendo votos negativos. Perguntas simples são o que torna uma comunidade poderosa. Por exemplo, veja isto
Mohsen

3
Quando passo o mouse sobre a seta para baixo de uma pergunta, vejo: "Esta pergunta não mostra nenhum esforço de pesquisa; não é clara ou não é útil". Eu ficaria tentado a votar sua pergunta com base na primeira (sem indicação do que você encontrou), na segunda (sem indicação em qual plataforma específica você está trabalhando e por que isso deve ser uma linha de comando (em vez do daemon de horário habitual) ) e o terceiro (a maioria dos usuários * nix terá algum daemon de tempo instalado por padrão).
Anthon

+1 Também não entendo os votos negativos, simplesmente porque isso é algo que me incomodou muitas vezes antes e parece impossível encontrar algo conciso e útil sobre esse tema específico.
L0b0

@Mohsen Eu não diminuí a votação, mas a diferença para a pergunta que você vinculou é que não existe switchruby, enquanto você pode definir diretamente a data via date -s(como mostrado na página de manual) ou usar qualquer um dos comandos descritos abaixo ...
Ulrich Dangel

11
@Anthon eu discordo: essa pergunta é sobre um pequeno dispositivo com BusyBox, o que torna o conselho genérico “uso NTP” não necessariamente aplicáveis
Gilles 'SO parada sendo mal'

Respostas:


29

Você pode usar :

sudo dpkg-reconfigure tzdata

para configurar seu fuso horário.

Para atualizar a data e hora da Internet, use o seguinte:

Instalar

Se o ntpd não estiver instalado, use qualquer um dos seguintes comandos para instalar o ntpd:

  • Para RPM baseado:

    yum install ntp 
    
  • Para o Debian:

    sudo apt-get install ntp
    

Configuração

Você deve pelo menos definir o seguinte parâmetro no arquivo de configuração /etc/ntp.conf: server

Por exemplo, abra o arquivo /etc/ntp.conf usando o editor de texto vi:

  # vi /etc/ntp.conf

Localize o parâmetro do servidor e configure-o da seguinte maneira:

  server pool.ntp.org

Salve o arquivo e reinicie o serviço ntpd:

  # /etc/init.d/ntpd start

Você pode sincronizar o relógio do sistema com um servidor NTP imediatamente com o seguinte comando:

  # ntpdate pool.ntp.org

* Para definir a hora e a data manualmente, use a seguinte sintaxe:

 date --set="STRING"

Por exemplo, defina novos dados como 2 de outubro de 2006 18:00:00, digite o seguinte comando como usuário root:

# date -s "2 OCT 2006 18:00:00"

OU

# date --set="2 OCT 2006 18:00:00"

Você também pode simplificar o formato usando a seguinte sintaxe:

# date +%Y%m%d -s "20081128"

Para definir o horário, use a seguinte sintaxe:

# date +%T -s "10:13:13"

Onde,

10: Hora (hh) 13: Minuto (mm) 13: Segundo (ss)

Use o equivalente da localidade% p de AM ou PM, digite:

# date +%T%p -s "6:10:30AM"

# date +%T%p -s "12:10:30PM"

Embora as informações da data pareçam válidas, elas não levam em consideração o requisito from the internetdo título do OP.
Anthon

Acredito que o pacote tzdata (dados de fuso horário) sincroniza os dados apenas da Internet. Corrija-me se eu estiver errado .
tusharmakkar08

3
tzdata são informações sobre fusos horários e horário de verão (início, fim, época) e não a data e a hora reais . É claro que é útil saber como chegar ao horário local com base no conhecimento do fuso horário e do horário UTC, mas você ainda precisa recuperar o último da Internet.
Anthon

Você está errado. os dados do fuso horário precisam ser atualizados (pois há alterações acontecendo o tempo todo), mas não são atualizados automaticamente a partir da internet. NOR define a hora da internet.
precisa

@ Anthon: Eu editei minha resposta correspondentemente. Obrigado.
tusharmakkar08

23

Encontrei um pequeno código para atualizar seu horário, caso você não queira instalar nada apenas para atualizar a data. :)

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

11
Eu uso google.inpara obter a hora atual do meu fuso horário (ÍNDIA).
Dilawar

Observe a trilha Zque indica que a hora é fornecida no fuso horário zulu; portanto, nenhuma manipulação especial de fuso horário deve ser necessária se o fuso horário do computador estiver definido corretamente.
user202729

10

Eu uso isso:

sudo ntpd -qg; sudo hwclock -w

primeiro diga ao ntpd para definir o horário e parar depois com -q. Além disso, no caso de um relógio ter um grande erro, precisamos dizer ao ntpd que também se ajuste nesse caso com -g. Por fim, escreva o relógio no hardware para preservar as alterações ao reiniciar com hwclock -w (-w para configurar o hardwareclock na hora atual do sistema, existe uma diferença).


11
i tendem a fazer isso com um "&&" em vez do ponto e vírgula para que, se o primeiro comando deve falhar (por exemplo, rede de conectividade para baixo) o segundo comando é curto-circuito
Theophrastus


5

Algumas distribuições estão atualizando a remessa para esse fim. Uso básico:

# just query
bash-4.2$ rdate pool.ntp.org
rdate: [pool.ntp.org]   Wed Jun 12 11:05:40 2013

# set system time
bash-4.2$ rdate -s pool.ntp.org

Maneira melhor e mais fácil do que ntp
andrewtweber

pool.ntp.orgagora recusa conexões de rdate. time.nist.govtrabalho. Depois de definir a hora do sistema, você também deve definir o relógio do hardware, executando-o hwclock -wpara definir a hora do sistema. Você pode, então, verificar se ele está correto, executandohwclock -r
MatthewLee

5

Depois de algumas pesquisas, acabei com isso. Também apliquei no meu próprio servidor:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p

Se o último comando mostrar uma lista válida de servidores, você estará pronto. O comando executará um conjunto bastante complexo de algoritmos que iterarão o desvio do relógio, entre outras coisas, e os compensarão. Você terminará com um relógio bastante preciso, mesmo se você perder a conexão com os servidores NTP. No entanto, o comando requer alguns minutos para começar.

Fonte: aqui e aqui .


0

Para encontrar "pares" (hosts que você pode consultar), você pode usar ntpq -p.

Se você já possui um serviço NTP em execução, é necessário interrompê-lo antes de atualizar manualmente, por exemplo, usando sudo service ntp stop.

Agora você pode consultar um par, por exemplo, usando sudo ntpdate "peer".


0

Usando a ferramenta rdate , conforme sugerido na resposta do manatwork , mas com as opções de protocolo SNTP -ne IPv4 -4em:

# just print synced time, not set
rdate -n -4 -p time-a.nist.gov

# print and set synced time
sudo rdate -n -4 time-a.nist.gov

A ferramenta pode ser instalada no Debian desta maneira:

sudo apt-get install rdate

0

Além da resposta de Tushar , eu também tive que fazer apt-get install ntpdateno meu Ubuntu 14.04.

Postar como resposta porque a reputação não é suficiente para comentar.


0

Eu também estava procurando uma maneira não ntp / ntpd de redefinir o relógio periodicamente. Gostei da análise do cabeçalho do google.com, mas achei que não funcionava no ubuntu. Eu acho que isso também funcionará em um Raspberry Pi.

sudo date +"%d %b %Y %T %Z" -s "$(wget -qSO- --max-redirect=0 http://google.com 2>&1 | grep '^  Date:' | cut -d' ' -f 5-)"

Também é uma alternativa usando curl em vez de wget.

sudo date +"%d %b %Y %T %Z" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)"

Testado em PI com rede celular e os resultados são semelhantes:

Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes

Nota: Eu uso o host para resolver google.com em um endereço IP, para que eu possa abrir somente esse IP durante o comando com iptables.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.