Como forçar o NTPD a atualizar a data / hora após a inicialização?

63

O Raspberry Pi não possui um relógio de hardware. Como forço o NTPD a atualizar a data / hora imediatamente após cada inicialização?

Estou executando o Raspbian e o Raspberry Pi está conectado usando um cabo Ethernet .

Alessandro Da Rugna
fonte
O meu já faz isso fora da caixa. O que você está usando?
Gerben
Raspbian Wheezy
Alessandro Da Rugna
funciona como está, de alguma forma #
1111
11
O @Thorb Pi está conectado ao cabo Ethernet / dhcp. Ele simplesmente não ter uma data válida após a inicialização, leva um tempo (10 a 45 minutos)
Alessandro Da Rugna
11
Isso será feito automaticamente após alguns minutos. Certifique-se de configurá-lo para usar o Master Clock no National Bureau of Standards, time.nist.gov, conforme descrito aqui: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

Respostas:

40

Faça um apt-get install ntpdate.

ntpdatefuncionará quando uma interface Ethernet for ativada e definirá o horário de um servidor ntp (consulte /etc/default/ntpdate).

Se ntpdestiver em execução, o ntpdate não fará nada, no entanto, ntpdateserá executado antes ntpdda inicialização - portanto, isso deve funcionar para definir o tempo de inicialização, desde que haja uma conexão Ethernet.

n
fonte
O Raspbian já terá tudo isso.
scruss
7
@scruss mine não. (2013-02-09 wheezy rasbian)
Pete Kirkham
11
O meu também não, teve que fazê-lo manualmente.
vaindil
Se estiver configurado corretamente, o fará automaticamente - embora possa demorar alguns minutos.
precisa saber é o seguinte
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxtambém não tinha.
Emix
36

Se o relógio estiver muito lento, talvez você precise forçar a sincronização do ntp fazendo:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start
thaspius
fonte
11
Ele retorna o erro "sudo: ntpd: comando não encontrado"
Pygmalion
11
ntpd deve ser instalado para usar o comando
thaspius
3
Ele está instalado, eu não sou tão ignorante :)
Pygmalion
Você poderia visitar raspberrypi.stackexchange.com/questions/47542/… ? Eu publiquei detalhes lá.
Pygmalion
3
Essa foi absolutamente a solução para o meu problema, mas achei que era temporário até a reinicialização. Eventualmente, percebi um erro no desligamento que não conseguia atualizar o hwclock porque o relógio hw tinha uma data futura (não faço ideia do que aconteceu). Mas a solução foi uma força de atualização do hwclock. Isso forçou a atualização do relógio de hardware falso e, na inicialização, o tempo foi pelo menos próximo do atual, para que o ntp pudesse fazer seu trabalho normalmente.
precisa saber é o seguinte
34

Depois de pesquisar, esse método funcionou para mim. Como você sabe, o Raspberry Pi 3 tem o NTP desativado por padrão. Então, basta digitar isso, o suporte NTP será ativado:

sudo timedatectl set-ntp True

Verifique o resultado com timedatectl status

Em caso de aviso, talvez você precise executar sudo timedatectl set-local-rtc truetambém.

Ariyankj
fonte
Obrigado, isso finalmente me ajudou, e parece ser o caminho certo, apesar das respostas anteriores.
precisa
11
Essa é a melhor resposta, me ajudou muito. Você pode usar 'sudo' para evitar digitar sua senha (útil para scripts que a executam). Qual é o objetivo do comando segundos? set-local-rtc
Arad
12

Se você definir o fuso horário no raspi-configRaspberry Pi atualizará automaticamente o horário na inicialização, se estiver conectado à Internet.

  1. sudo raspi-config
  2. Selecione Internationalisation Options
  3. Selecione I2 Change Timezone
  4. Selecione sua área geográfica
  5. Selecione a cidade mais próxima
  6. Selecione Finish
  7. Selecione Yespara reiniciar agora
mwd27
fonte
Isso funcionou bem para mim
AlexG
I2 Change Timezoneopção não existe mais
mrded 25/06
12

Ver postagem no fórum O tempo não é sincronizado no Pi 3 e com o dongle oficial .

O ntpd emite pacotes IP / UDP com o campo ToS definido como 0xc0. Isso é bem parecido com o outro problema que eu (e muitos outros) tenho com o Raspberry Pi3 quando operado por uma interface interna Wi-Fi.

Como solução alternativa, adicione o comando

/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00

para o arquivo

/etc/rc.local

antes da linha de saída 0. Em seguida, reinicie e verifique.

pradeep
fonte
11
Eu tive o mesmo problema que instalei o RPi3 que obtive para o XMas e você resolveu o meu problema. Ótimo !!!
Jfmessier 27/12/16
8

Já deve estar atualizando a hora. O servidor NTPD deve iniciar logo após o arquivo de troca e antes do SSHD.

Verifique seu arquivo /etc/ntp.conf para garantir que ele esteja configurado.

Ele deve listar pelo menos um servidor. Eu uso o time.nrc.ca no meu servidor.

A página de manual do ntp.conf está aqui: http://linux.die.net/man/5/ntp.conf

Rod MacPherson
fonte
3

O Rasberry Pi do meu filho não atualizava o tempo fora da caixa e, depois de tentar todas as sugestões acima, era possível atualizar manualmente, mas não automaticamente. Finalmente, depois de procurar em outro lugar também sem sucesso, descobri que o arquivo ntp.conf que acompanha o Rasberry Pi tinha as seguintes linhas comentadas:

#restrict 127.0.0.1
#restrict ::1

eu usei

sudo nano /etc/ntp.conf

no terminal para editar o arquivo conf ntp agora:

# Local users may interrogate the ntp server more closely. 
restrict 127.0.0.1
restrict ::1

Isso resolveu o problema para nós. É atualizado com o cabo WiFi e ethernet. Não sei se ele seria atualizado com o WiFi sem a alteração para rc.local sugerida acima, pois quando encontrei a solução acima, eu já havia feito essa alteração e não a desfazi.

deLabe
fonte
2

Encontrei o timedatectlaplicativo para me ajudar quando estava tendo um problema semelhante. Ele é instalado por padrão e o '--help' fornece uma visão geral bastante boa e simples de como usar a ferramenta.

Nota: verifique se o fuso horário está definido corretamente, o que esta ferramenta também pode fazer.

Adam Parsons
fonte
1

Essa é a abordagem que acabei adotando. Muitas dessas respostas pareciam indicar coisas que simplesmente não saíram quando olhei para o meu sistema Raspian:

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Eu não tinha nada que aparecesse nos logs indicando que timedatectlestava fazendo alguma coisa, ou que ntpestava sincronizando no estado ativo da NIC, ou que o NTPD estava instalado / configurado.

No final, eu apenas adicionei isso ao meu /etc/rc.local:

$ cat /etc/rc.local
logger "Beginning force syncing NTP..."
service ntp stop
ntpd -gq
service ntp start
logger "Finished force syncing NTP..."

E instalado ntp:

$ sudo apt-get install ntp

O que resulta em /var/log/syslog:

Aug  5 09:10:20 pi-hole ntp[526]: Starting NTP server: ntpd.
Aug  5 09:10:20 pi-hole ntpd[555]: proto: precision = 1.458 usec (-19)
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:21 pi-hole ntpd[555]: ntpd exiting on signal 15 (Terminated)
Aug  5 09:10:21 pi-hole ntp[661]: Stopping NTP server: ntpd.
Aug  5 09:10:21 pi-hole ntpd[674]: ntpd [email protected] Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:21 pi-hole ntpd[674]: Command line: ntpd -gq
Aug  5 09:10:21 pi-hole ntpd[674]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:34 pi-hole ntpd[674]: Soliciting pool server 198.98.57.16
Aug  5 09:10:35 pi-hole ntpd[674]: Soliciting pool server 74.82.59.149
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 23.131.160.7
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 52.37.26.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 204.2.134.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 96.126.100.203
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 199.223.248.101
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 66.228.42.59
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 208.75.89.4
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 204.2.134.164
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 104.236.116.147
Aug  5 09:10:38 pi-hole ntpd[674]: Soliciting pool server 204.9.54.119
Aug  5 09:10:48 pi-hole ntpd[674]: ntpd: time set +6.769186 s
Aug  5 09:10:49 pi-hole ntpd[853]: ntpd [email protected] Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:49 pi-hole ntpd[853]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 111:114
Aug  5 09:10:49 pi-hole ntp[844]: Starting NTP server: ntpd.
Aug  5 09:10:49 pi-hole ntpd[856]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:49 pi-hole root: Finished force syncing NTP...
slm
fonte
Não funciona no mínimo raspbian: Failed to start ntp.service: Unit ntp.service not found.E o ntpd também não existe. O Pi definitivamente ganha tempo. (Eu estou olhando para isso porque meus cachos HTTPS falhar sem -k quando executado antes disso)
Steven Lu
@StevenLu - vou atualizar o A'er para incluir a instalação do ntp também.
Slm
@StevenLu -apt-get install ntp
slm
1

Você não precisa usar o ntp para resolver o problema. Há um script que lê a data de um servidor e você só precisa definir a data para ser o resultado desse script (seu Raspberry Pi precisa estar conectado à Internet). Em seguida, você precisa executar esse comando na inicialização.

Etapa 1: recuperar a data de um servidor.

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

Etapa 2: execute o comando na inicialização adicionando-o ao arquivo /etc/rc.local(Trabalhado no Ubuntu 16.04).

sudo gedit /etc/rc.local

CRÉDITOS:

1- https://askubuntu.com/a/655528/572294

2- https://askubuntu.com/a/1199/572294

Amjad Abujamous
fonte
0

Eu uso o seguinte na imagem padrão para sincronizar o tempo sem instalar pacotes adicionais:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
Wu Haa
fonte