Come viene tenuto il tempo sul Raspberry Pi?


17

Come viene tenuto il tempo su un Raspberry Pi con l'ultima versione di Raspbian? Cosa imposta l'orologio interno da un server NTP? Cosa succede quando nessun server NTP è disponibile?

Dal mio programma sto provando a determinare se l'orario è stato impostato da NTP e chiedo all'utente di impostarlo in caso contrario.



4
Se time.now <rispetto all'anno 2010, il tempo non è impostato. Non hai bisogno di sapere nient'altro. Il tempo non viene risparmiato in caso di interruzione dell'alimentazione e sarà del 1970 secondo le specifiche UNIX / POSIX. Per scoprire se l'ora è imprecisa, è necessario interrogare NTP e confrontare l'ora locale. Non è possibile determinare se l'ora non è sincronizzata senza chiedere un time server.
Piotr Kula,

4
se time.now <2010 non funzionerà poiché l'RPi imposta l'ora corrente dall'ora dell'ultimo spegnimento. Questo è il motivo per cui voglio sapere come è impostato l'orario in modo da poter disabilitare questo comportamento, se necessario.
Guy

zucca: in che modo questa domanda è legata alla deriva dell'orologio interno?
Guy

1
Forse il titolo di questa domanda dovrebbe essere più specifico per evitare sovrapposizioni tra queste domande.
XTL,

Risposte:


22

Raspbian ha due soluzioni software per il cronometraggio. Poiché NTP richiede una connessione di rete ed è abbastanza inutile se Raspberry Pi non è connesso alla rete, utilizza anche fake-hwclock . Salva periodicamente l'orologio corrente e lo carica all'avvio.

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

Questo non è troppo preciso, ma eliminerà il problema del viaggio nel tempo fino al 1970 dopo ogni riavvio.


Buona supposizione Jivings! :-)
Piotr Kula il

@ asalamon74: puoi aggiungere come disabilitare fake-hwclock o dovrebbe essere disinstallato?
Guy

2

È possibile registrare le statistiche NTP e quindi analizzare i registri dal proprio programma.

Le impostazioni del demone NTP sono archiviate nel file /etc/ntp.conf. Riga di commento con direttiva statsdirper abilitare la registrazione delle statistiche NTP. Assicurarsi che la directory di riferimento esista e sia scrivibile per l'utente ntpd.


1

Per verificare se l'ora è stata impostata da un server NTP puoi provare a usare ntpq -p otterrai qualcosa del genere *:

$ 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

La 'portata' sarà> 0 in una riga se il server NTP è stato raggiunto e quindi imposta l'ora. Si tratta di 8 bit ottali scorrevoli lungo cioè 0,1,3,7,17,37,77,177,377

O questo - potresti grep 'stratum' <16 o sync_ntp (questo ovviamente non è su RPi)

$ 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
$

In alternativa (penso che ntpstat non sia immediatamente disponibile su 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 usa anche i codici di uscita spiegati qui http://www.cyberciti.biz/faq/linux-unix-bsd-is-ntp-client-working/ certamente non specifici per RPi ...

* Gli indirizzi del time server non sono reali


-1

Il cronometraggio è tutto in software. Senza usare NTP non è possibile effettuare il cronometraggio.

Se vuoi controllare se l'orologio è stato impostato, usa semplicemente dateper vedere se mostra l'epoca Unix, che è ciò che il Pi imposterà di default.


2
Non corretto. L'RPi imposta l'ora corrente dall'ora dell'ultimo spegnimento quando non è presente alcuna connessione di rete. Quindi l'orologio è sempre un po 'di tempo casuale prima dell'orario corretto, non necessariamente in epoca Unix.
Guy

2
Questo non è certamente vero sul mio Pi. Se lo avvio senza una connessione di rete, allora è l'ora. Posso vederlo adesso.
Jivings

2
Probabilmente dipende dalla distribuzione.
Alex Chamberlain,

1
@AlexChamberlain Sembra una strana discrepanza.
Jivings,

1
@Jivings Se c'è un software chiamato su Raspbian chiamato fake-hwclock, probabilmente non sarà su Arch. Sembra il tipo di lanugine che Arch ignora.
Alex Chamberlain,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.