Comment le temps est-il conservé sur le Raspberry Pi?


17

Comment le temps est-il conservé sur un Raspberry Pi avec la dernière version de Raspbian? Qu'est-ce qui définit l'horloge interne d'un serveur NTP? Que se passe-t-il quand aucun serveur NTP n'est disponible?

À partir de mon programme, j'essaie de déterminer si l'heure a été réglée à partir de NTP et je demande à l'utilisateur de la régler si ce n'est pas le cas.



4
Si time.now <than year 2010 - then time is not set. Vous n'avez besoin de rien savoir d'autre. Le temps n'est pas économisé lors des coupures de courant et sera de 1970 selon les spécifications UNIX / POSIX. Pour savoir si l'heure est inexacte, vous devez interroger NTP et comparer l'heure locale. Vous ne pouvez pas déterminer si le temps n'est pas synchronisé sans demander à un serveur de temps.
Piotr Kula

4
si time.now <2010 ne fonctionnera pas car le RPi définit l'heure actuelle à partir de sa dernière heure d'arrêt. C'est pourquoi je veux savoir comment l'heure est réglée pour pouvoir désactiver ce comportement si nécessaire.
Guy

citrouille - comment cette question est-elle liée à la dérive de l'horloge interne?
Guy

1
Peut-être que le titre de cette question devrait être plus précis pour éviter le chevauchement entre ces questions.
XTL

Réponses:


22

Raspbian dispose de deux solutions logicielles de chronométrage. Étant donné que NTP nécessite une connexion réseau et qu'il est tout à fait inutile si votre Raspberry Pi n'est pas connecté au réseau, il utilise également une fausse horloge . Il enregistre l'horloge actuelle périodiquement et la charge au démarrage.

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

Ce n'est pas trop précis, mais cela éliminera le problème du temps qui revient à 1970 après chaque redémarrage.


Bonne conjecture Jivings! :-)
Piotr Kula

@ asalamon74: pouvez-vous ajouter comment désactiver fake-hwclock ou faudrait-il le désinstaller?
Guy

2

Vous pouvez enregistrer des statistiques NTP, puis analyser les journaux de votre programme.

Les paramètres du démon NTP sont stockés dans un fichier /etc/ntp.conf. Décommentez la ligne avec la directive statsdirpour activer la journalisation des statistiques NTP. Assurez-vous que le répertoire référencé existe et est accessible en écriture pour l'utilisateur ntpd.


1

Pour vérifier si l'heure a été définie par un serveur NTP, vous pouvez essayer d'utiliser ntpq -p, vous obtiendrez quelque chose comme ceci *:

$ 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 «portée» sera> 0 dans une certaine ligne si le serveur NTP a été atteint et ainsi régler l'heure. C'est un octal glissant de 8 bits soit 0,1,3,7,17,37,77,177,377

Ou ceci - vous pourriez grep 'stratum' <16 ou sync_ntp (ce n'est pas sur RPi évidemment)

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

Alternativement (je pense que ntpstat n'est pas disponible immédiatement sur RPi)

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

et utilisez les codes de sortie aussi expliqués ici http://www.cyberciti.biz/faq/linux-unix-bsd-is-ntp-client-working/ certes pas spécifiques à RPi ...

* Les adresses des serveurs horaires ne sont pas réelles


-1

Le chronométrage est entièrement logiciel. Sans utiliser NTP, il n'y a pas de chronométrage.

Si vous voulez vérifier si l'horloge a été réglée, utilisez simplement datepour voir si elle montre l'époque Unix, ce à quoi le Pi sera par défaut.


2
Incorrect. Le RPi définit l'heure actuelle à partir de sa dernière heure d'arrêt lorsqu'il n'y a pas de connexion réseau. L'horloge est donc toujours une heure aléatoire antérieure à l'heure correcte, pas nécessairement l'époque Unix.
Guy

2
Ce n'est certainement pas vrai sur mon Pi. Si je le démarre sans connexion réseau, le moment est venu. Je peux voir ça maintenant.
Jivings

2
Cela dépend probablement de la distribution.
Alex Chamberlain

1
@AlexChamberlain Semble une étrange différence.
Jivings

1
@Jivings S'il existe un logiciel appelé sur Raspbian fake-hwclock, il ne sera probablement pas sur Arch. Sonne comme le genre de peluches qu'Arch ignore.
Alex Chamberlain
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.