Como o tempo é mantido no Raspberry Pi?


17

Como o tempo é mantido em um Raspberry Pi com a versão mais recente do Raspbian? O que define o relógio interno de um servidor NTP? O que acontece quando nenhum servidor NTP está disponível?

No meu programa, estou tentando determinar se o tempo foi definido no NTP e pedir ao usuário que o defina, se não tiver.



4
Se time.now <que ano 2010 - então o tempo não está definido. Você não precisa saber mais nada. O tempo não é economizado em quedas de energia e será 1970, conforme a especificação UNIX / POSIX. Para descobrir se a hora é imprecisa, você precisa consultar o NTP e comparar a hora local. Você não pode determinar se o tempo está fora de sincronia sem solicitar um servidor de horário.
Piotr Kula

4
se time.now <2010 não funcionar, pois o RPi define o horário atual desde o último horário de desligamento. É por isso que quero saber como o tempo está definido para que eu possa desativar esse comportamento, se necessário.
14132 Guy

abóbora - como esta questão está relacionada à deriva do relógio interno?
14132 Guy

1
Talvez o título desta pergunta deva ser mais específico para evitar sobreposição entre essas perguntas.
XTL

Respostas:


22

O Raspbian possui duas soluções de software para cronometragem. Como o NTP requer conexão de rede e é bastante inútil se o seu Raspberry Pi não estiver conectado à rede, ele também usa o fake-hwclock . Ele salva o relógio atual periodicamente e o carrega na inicialização.

pi@raspberrypi ~ $ cat /etc/fake-hwclock.data 
2012-08-15 03:17:01

Isso não é muito preciso, mas eliminará o problema de voltar no tempo para 1970 após cada reinicialização.


Bom palpite Jivings! :-)
Piotr Kula

@ asalamon74: você pode adicionar como desativar o fake-hwclock ou precisaria ser desinstalado?
Guy

2

Você pode registrar estatísticas de NTP e analisar os logs do seu programa.

As configurações de NTP daemon são armazenados no arquivo /etc/ntp.conf. Descomente a linha com a diretiva statsdirpara habilitar o log de estatísticas NTP. Verifique se o diretório referenciado existe e é gravável para o usuário ntpd.


1

Para verificar se o tempo foi definido por um servidor NTP, você pode tentar usar o ntpq -p, obterá algo assim *:

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*223.212.138.2    .MRS.           1 u  424  512  377    4.080   -4.551  21.857
+ts0.tttsc.nvm.e  .GPS.           1 u  387  512  363    1.304   -7.563  28.405
+218.89.10.3      217.13.17.82    2 u  334  512  377    1.853   -4.562  19.474

O 'alcance' será> 0 em alguma linha se o servidor NTP tiver sido alcançado e, assim, definir o horário. É um deslizamento octal de 8 bits, ou seja, 0,1,3,7,17,37,77,177,377

Ou isso - você pode grep 'stratum' <16 ou sync_ntp (isso não está no RPi, obviamente)

$ ntpq -c rl
associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
version="ntpd 4.2.6p5@1.2349-o Mon Jul 18 09:22:49 UTC 2013 (1)",
processor="x86_64", system="Linux/2.6.32-431.29.2.el6.x86_64", leap=00,
stratum=4, precision=-21, rootdelay=40.242, rootdisp=315.102,
refid=192.168.1.123,
reftime=d82131cd.fbb96c5e  Thu, Nov 27 2014 13:14:53.983,
clock=d82138e6.fd03bdd1  Thu, Nov 27 2014 13:45:10.988, peer=61770, tc=9,
mintc=3, offset=5.214, frequency=52.475, sys_jitter=12.217,
clk_jitter=23.319, clk_wander=1.373
$

Como alternativa (acho que o ntpstat não está disponível imediatamente no RPi)

$ ntpstat
synchronised to NTP server (192.168.1.123) at stratum 4
   time correct to within 310 ms
   polling server every 512 s

e use códigos de saída também explicados aqui http://www.cyberciti.biz/faq/linux-unix-bsd-is-ntp-client-working/ reconhecidamente não específicos de RPi ...

* Os endereços do servidor de horário não são reais


-1

A cronometragem é toda em software. Sem usar o NTP, não há indicação de tempo.

Se você quiser verificar se o relógio foi ajustado, use-o datepara ver se mostra a época do Unix, que é o padrão para o Pi.


2
Incorreta. O RPi define o horário atual desde o último horário de desligamento, quando não há conexão de rede. Portanto, o relógio é sempre algum tempo aleatório antes da hora correta, não necessariamente na época do Unix.
22612 Guy

2
Isso certamente não é verdade no meu Pi. Se eu inicializá-lo sem uma conexão de rede, a hora é a época. Eu posso ver isso agora.
Jivings

2
Provavelmente depende da distribuição.
Alex Chamberlain

1
@AlexChamberlain Parece uma discrepância estranha.
Jivings

1
@Jivings Se houver um software no Raspbian chamado fake-hwclock, provavelmente não estará no Arch. Parece o tipo de cotão que Arch ignora.
Alex Chamberlain
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.