Wie wird die Zeit auf dem Raspberry Pi gehalten?

17

Wie wird die Zeit auf einem Raspberry Pi mit der neuesten Raspbian-Version gehalten? Was stellt die interne Uhr von einem NTP-Server ein? Was passiert, wenn kein NTP-Server verfügbar ist?

In meinem Programm versuche ich festzustellen, ob die Uhrzeit über NTP eingestellt wurde, und fordere den Benutzer auf, sie einzustellen, falls dies nicht der Fall ist.

Kerl
quelle
Mögliches Duplikat von Wie genau ist die Uhrzeit von Raspberry Pi?
Piotr Kula
4
Wenn time.now <als das Jahr 2010 ist, ist die Zeit nicht eingestellt. Sie brauchen sonst nichts zu wissen. Die Zeit wird beim Herunterfahren nicht gespart und beträgt 1970 gemäß UNIX / POSIX-Spezifikation. Um herauszufinden, ob die Zeit ungenau ist, müssen Sie NTP abfragen und die Ortszeit vergleichen. Sie können nicht feststellen, ob die Zeit nicht synchron ist, ohne einen Zeitserver zu fragen.
Piotr Kula
4
if time.now <2010 funktioniert nicht, da das RPi die aktuelle Zeit seit dem letzten Herunterfahren festlegt. Aus diesem Grund möchte ich wissen, wie die Uhrzeit eingestellt ist, damit ich dieses Verhalten bei Bedarf deaktivieren kann.
Guy
Kürbis - wie hängt diese Frage mit dem Drift der inneren Uhr zusammen?
Guy
1
Vielleicht sollte der Titel dieser Frage genauer sein, um Überschneidungen zwischen diesen Fragen zu vermeiden.
XTL

Antworten:

21

Raspbian bietet zwei Softwarelösungen für die Zeitmessung an. Da NTP eine Netzwerkverbindung erfordert und es ziemlich nutzlos ist, wenn Ihr Raspberry Pi nicht mit dem Netzwerk verbunden ist, verwendet es auch eine gefälschte Uhr . Es speichert die aktuelle Uhr in regelmäßigen Abständen und lädt sie beim Start.

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

Dies ist nicht zu genau, beseitigt jedoch das Problem, dass die Zeit nach jedem Neustart auf 1970 zurückgeht.

asalamon74
quelle
Gute Vermutung Jivings! :-)
Piotr Kula
@ asalamon74: kannst du hinzufügen, wie man fake-hwclock deaktiviert oder müsste es deinstalliert werden?
Guy
2

Sie können NTP-Statistiken protokollieren und anschließend Protokolle aus Ihrem Programm analysieren.

Die Einstellungen des NTP-Dämons werden in einer Datei gespeichert /etc/ntp.conf. Kommentarzeile mit Direktive statsdirzum Aktivieren der NTP-Statistikprotokollierung. Stellen Sie sicher, dass das referenzierte Verzeichnis vorhanden und für den Benutzer beschreibbar ist ntpd.

Dawid Ferenczy Rogožan
quelle
1

Um zu überprüfen, ob die Zeit von einem NTP-Server eingestellt wurde, können Sie versuchen, ntpq -p zu verwenden. Sie erhalten ungefähr Folgendes *:

$ 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

Die 'Reichweite' wird in einer Reihe> 0 sein, wenn der NTP-Server erreicht wurde und somit die Zeit eingestellt wurde. Es ist ein 8-Bit-Oktal, das entlang gleitet, dh 0,1,3,7,17,37,77,177,377

Oder dies - Sie könnten 'stratum' <16 oder sync_ntp (dies ist offensichtlich nicht auf RPi)

$ ntpq -c rl
associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
version="ntpd [email protected] 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
$

Alternativ (ich denke ntpstat ist nicht sofort auf RPi verfügbar)

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

und benutze auch die hier erklärten Exit-Codes http://www.cyberciti.biz/faq/linux-unix-bsd-is-ntp-client-working/ zugegebenermaßen nicht RPi-spezifisch ...

* Zeitserveradressen sind nicht echt

xcxc
quelle
-1

Die Zeitmessung ist alles in Software. Ohne Verwendung von NTP findet keine Zeitmessung statt.

Wenn Sie überprüfen möchten, ob die Uhr eingestellt wurde, überprüfen Sie mit, ob die dateUnix-Epoche angezeigt wird. Dies ist die Standardeinstellung des Pi.

Jivings
quelle
2
Falsch. Das RPi stellt die aktuelle Zeit seit dem letzten Herunterfahren ein, wenn keine Netzwerkverbindung besteht. Die Uhr ist also immer eine zufällige Zeit früher als die richtige Zeit, nicht unbedingt die Unix-Epoche.
Guy
2
Das stimmt auf meinem Pi sicher nicht. Wenn ich es ohne Netzwerkverbindung starte, ist die Zeit gekommen. Ich kann das jetzt sehen.
Jivings
2
Es hängt wahrscheinlich von der Verteilung ab.
Alex Chamberlain
1
@ AlexChamberlain Scheint eine seltsame Diskrepanz.
Jivings
1
@Jivings Wenn es auf Raspbian eine Software gibt, die aufgerufen wird fake-hwclock, wird es wahrscheinlich nicht auf Arch sein. Klingt wie die Art von Flusen, die Arch ignoriert.
Alex Chamberlain