Estou executando o Ubuntu em um sistema embarcado baseado em ARM que não possui um RTC com bateria. A hora do despertar está em algum lugar durante 1970. Portanto, eu uso o serviço NTP para atualizar a hora para a hora atual.
Adicionei a seguinte linha ao /etc/rc.local
arquivo:
sudo ntpdate -s time.nist.gov
No entanto, após a inicialização, ainda leva alguns minutos até que o horário seja atualizado, período durante o qual não posso trabalhar efetivamente com tar
e make
.
Como forçar uma atualização do relógio a qualquer momento?
ATUALIZAÇÃO 1: O seguinte (graças a Eric e Stephan) funciona bem na linha de comando, mas falha ao atualizar o relógio quando colocado /etc/rc.local
:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date
Thu Jan 1 00:00:58 UTC 1970
* Stopping NTP server ntpd [ OK ]
* Starting NTP server [ OK ]
Thu Feb 14 18:52:21 UTC 2013
O que estou fazendo errado?
ATUALIZAÇÃO 2: Tentei seguir as poucas sugestões fornecidas em resposta à 1ª atualização, mas nada parece realmente fazer o trabalho conforme necessário. Aqui está o que eu tentei:
- Substitua o servidor para
us.pool.ntp.org
- Use caminhos explícitos para os programas
- Remova o
ntp
serviço completamente e deixar apenassudo ntpdate ...
emrc.local
- Remova o
sudo
comando acima emrc.local
Usando o exposto acima, a máquina ainda inicia em 1970. No entanto, ao fazer isso na linha de comando, uma vez logado (via ssh
), o relógio é atualizado assim que eu chamar ntpdate
.
A última coisa que fiz foi remover isso rc.local
e fazer uma chamada ntpdate
no meu .bashrc
arquivo. Isso atualiza o relógio conforme o esperado e recebo a hora atual verdadeira quando o prompt de comando estiver disponível.
No entanto , isso significa que, se a máquina estiver ligada e nenhum usuário estiver conectado, o tempo nunca será atualizado. É claro que posso reinstalar o ntp
serviço para que pelo menos o relógio seja atualizado dentro de alguns minutos da inicialização, mas voltamos ao ponto 1.
Portanto, existe uma razão pela qual inserir o ntpdate
comando rc.local
não executa a tarefa necessária, enquanto isso .bashrc
funciona bem?
ntpdate -s ntp.ubuntu.com
[1]: askubuntu.com/a/81301/130162sudo
nos arquivos /etc/rc.locale. Eles já estão sendo executados como root.timedatectl
, mas askubuntu.com/questions/832646/…Respostas:
Provavelmente o
ntp
serviço está em execução, é por issontpdate
que não é possível abrir o soquete (porta 123 UDP) e conectar-se ao servidor ntp.Tente na linha de comando:
Se você deseja colocar isso em
/etc/rc.local
uso, faça o seguinte:fonte
service
partir do rc.local e cron, mas consegui corrigi-lo usando o /etc/init.d/xxx. Na verdade, acho que você não precisa fornecer o caminho completontpdate
, gosto de usar caminhos completos em scripts apenas para garantir que o arquivo correto seja encontrado.us.pool.ntp.org
é mais responsivo.-u
opção, você não precisa interromper o serviço ntp:sudo ntpdate -u time.nist.gov
Em vez de ntpdate (que está obsoleto ), use
O
-gq
comando diz ao daemon ntp para corrigir a hora, independentemente do deslocamento (g
) e sair imediatamente (q
) após definir a hora.fonte
ntpd
manual, não tenho certeza de como isso força uma atualização?sudo ntpd -gq
não sai! Estou às 14.10 e tenho que CTRL + C para continuar ... ou quanto tempo leva?sudo service ntp...
parasudo service ntpd...
.Use sntp para definir a hora imediatamente. Por exemplo:
Os números após -s podem ser qualquer servidor de horário ntp, esse é o NIST em ft. Collins, Colorado.
fonte
Como outros já apontaram, a melhor solução é instruir o ntpd a ignorar o limite de pânico, que é de 1000 segundos por padrão. Você pode configurar o limite de pânico de uma das duas maneiras:
/etc/default/ntp
e verifique se a opção -g está presente.tinker panic 0
no topoAté agora, isso é essencialmente o que os outros recomendaram; no entanto, acho que você deve dar mais um passo. Instale o programa fake-hwclock:
Com o fake-hwclock instalado, sua máquina não iniciará pensando que é 1970 novamente. Quando a sua máquina é inicializada, o relógio é marcado com o carimbo de data / hora fake-hwclock gravado durante a última reinicialização / desligamento. Isso significa que você pode ter um relógio um pouco correto, caso haja problemas de rede ao inicializar.
fonte
-g
parecia fazer nada por mim (na linha de comando, eu não tenho/etc/default/ntp
), mas acrescentandotinker panic 0
quentp.conf
trabalhoutinker panic 0
definitivamente parece ter funcionado.O ntpdate é um programa diferente do net dameon. NTPDate provavelmente está com erro na inicialização porque o ntpd está sendo executado nesse soquete.
Na linha de comandos, execute
Você também pode desinstalar o ntpd todos juntos (apt-get remove ntp) e adicionar um script cron para usar o ntpdate a cada hora.
ATUALIZAR
O serviço NTP provavelmente não terá um valor significativo para você neste sistema, portanto remova-o primeiro.
Agora adicione o comando:
para
/etc/rclocal
Reinicie. Deve ser bom nesse ponto.
fonte
Use
timedatectl
(unidade de serviço do systemd) para definir a hora.ntp
está obsoleto.Você pode verificar a hora em que foi atualizada lendo os logs com
journalctl -xe | tail
Referência
man timesyncd.conf
fonte
se tudo o que você quer fazer é acertar o relógio uma vez, simples
fonte
A maneira correta de fazer isso em um sistema Debian / Mint / Ubuntu (ou outro derivado Debian) é ter a linha
no arquivo
Isso garante que, quando o ntpd for iniciado a partir do script /etc/init.d/ntp, ele seja executado com a opção "-g", viz
para permitir que o ntpd corrija a hora do sistema quando houver mais de 1000 s de saída, por exemplo, quando a hora do sistema for 1º de janeiro de 1970 na inicialização, porque não há RTC de hardware.
fonte
/etc/default/ntp
, mas o tempo não estava sincronizado.tlsdate
define o relógio local conectando-se com segurança ao TLS com servidores remotos e extraindo o tempo remoto do handshake seguro. Ao contráriontpdate
,tlsdate
usa o TCP, por exemplo, conectando-se a um serviço habilitado para HTTPS ou TLS remoto e fornece alguma proteção contra adversários que tentam fornecer informações de tempo mal-intencionadas.fonte
Observe que alguns sistemas atuais baseados no Ubuntu nem usam o serviço NTP por padrão agora. Na minha máquina Linux Mint 19 (Ubuntu 18.04), o tempo é mantido
systemd-timesyncd
.Então, para ter um tempo atualizado após a perda de sincronização, eu apenas corro
Desde 15.04, o Ubuntu usa o systemd por padrão. Portanto, sistemas críticos como o tempo são gerenciados pelo systemd. Para descobrir qual serviço seu sistema está usando, execute algo como
Para o TechJS em 16.04, o serviço foi
ntp
. Para mim no Ubuntu 18.04 (Mint 19), o serviço ésystemd-timesyncd
. Curiosamente, eu entrei em um servidor 16.04 que eu tenho e ele usasystemd-timesyncd
também.fonte
Tente usar a
-b
opção para aumentar o tempo.fonte
1 Jan 00:04:11 ntpdate[2226]: the NTP socket is in use, exiting
. No entanto, acho que tentei isso antes,rc.local
mas não ajudou.ntpdate -b <ipaddress>
Bem,
Estou executando um raspbian (debian wheezy) no meu raspberry pi, que não possui o hwclock. Achei útil escrever um pequeno script e executá-lo depois que minha interface da Internet estiver ativa, para ter certeza de que, no momento em que a rede estiver disponível, o relógio será atualizado.
Primeiro verifique se você possui o
ntpdate
pacote executandoVocê precisa adicionar o seguinte ao seu
/etc/network/interfaces
(certamenteeth0
aqui está apenas um exemplo):E crie o seguinte script em
/usr/local/sbin/update-time.sh
(não se esqueça de torná-lo executável porchmod
):fonte
Os algoritmos ntpd descartam os desvios de amostra que excedem 128 ms, a menos que o intervalo durante o qual nenhum deslocamento de [valor absoluto de] seja menor que 128 ms exceda 900s. A primeira amostra depois disso, independentemente do deslocamento, avança o relógio para a hora indicada. Na prática, isso reduz a taxa de falsos alarmes em que o relógio é pisado com erro para uma incidência extremamente baixa.
Normalmente, o ntpd sai se o deslocamento exceder o limite de sanidade, que é 1000 s por padrão. Isso pode ser desativado com a opção -g:
-g Normalmente, o ntpd sai se o deslocamento exceder o limite de sanidade, que é 1000 s por padrão. Se o limite de sanidade estiver definido como zero, nenhuma verificação de sanidade será realizada e qualquer deslocamento será aceitável. Esta opção substitui o limite e permite que o tempo seja definido como qualquer valor sem restrição; no entanto, isso pode acontecer apenas uma vez. Depois disso, o ntpd será fechado se o limite for excedido. Esta opção pode ser usada com a opção -q.
ambos em http://doc.ntp.org/4.1.0/ntpd.htm
-Jonathan Natale
fonte
Se você puder dispor de tempo para aguardar o tempo que leva para o sistema ser sincronizado, use o
ntp-wait
comando:fonte
Se você estiver no systemd, poderá usar este comando:
E então o tempo é atualizado dentro de 10 a 15 segundos.
Testado no ubuntu mate 16.04
fonte
ntpd
entpdate
execute por padrão usando uma porta restrita (UDP 123). Se você estiver protegido por um firewall,ntpd
nunca funcionará, masntpdate
poderá funcionar com a-u
opção Por exemplo:ntpdate -u 0.ubuntu.pool.ntp.org
ountpdate -u time.nist.gov
ambos devem funcionar bem.fonte