Uhrzeit Korrektur

Aus Linupedia.org
Version vom 2. September 2006, 14:03 Uhr von Robi (Diskussion | Beiträge) (Zeitkorrektur nach größeren Abweichungen)
Wechseln zu: Navigation, Suche

Uhrzeit Korrektur

Problem  : ungenaue oder falsche Linuxzeit

Die Uhrzeit bildet besonders bei neu hinzugekommenen Linuxnutzern immer wieder mal Anlass zur Verärgerung. Es scheint so, als ob die Uhr in Linux immer wieder falsch geht, und je mehr man die Uhrzeit korrigiert, um so schlimmer wird das Problem. Bei anderen Systemen die sich auf dem selben Rechner befinden tritt dieses Problem nicht auf.

Weder Hard- noch Softwarefehler

In den meisten Fällen handelt es sich weder um einen Hard- noch um einen Softwarefehler, sondern schlicht daran, dass die Funktion von Automatismen zur Uhrzeitkorrektur innerhalb von Linux nicht bekannt sind, und man mit dem wiederholtem manuellem Verstellen der Uhrzeit einen immer größer werdenden Zeitdrift anstößt.


Das Grundprinzip der Uhr

Zwei Arten der Zeitangabe =

Es gibt auf einem Rechner 2 möglich Arten der Zeitangabe und wir müssen dem Rechner mitteilen welche wir benutzen wollen. Vom Prinzip ist es LINUX egal wie wir uns entscheiden, im Zweifelsfall UTC. Sollten sich weitere Systeme auf dem Rechner befinden, sollten wir uns an deren Einstellung deren Zeitangabe anschließen.

UTC(GMT) 
Koordinierte Weltzeit(UTC) (früher Greenwich Mean Time (GMT)) hier wird die Systemuhr auf die Zeit der mittleren Sonnenzeit durch Greenwich (Großbritannien - nullter Längengrad) gestellt. Die Zeitanzeige setzen sich dann zusammen aus dieser Uhr und der Zeitverschiebung die wir in Form der Zeitzone gemacht haben. Auch von eventuelle Sommer- und Winterzeit wird aus der Zeitzonenangabe automatisch gewonnen und fließt mit in die Zeitanzeige ein.
Ortszeit oder Localtime 
Hier wird die Uhr auf die aktuelle Zeit am Ort eingestellt und auch so angezeigt. In unseren Breiten also MEZ/MESZ. Um die Zeit mit anderen Rechnern oder Zeiten zu vergleichen, wird dann eingestellte Zeitzone mit herangezogen.
die Zoneninformationen 
stehen im Verzeichnis /usr/share/zoneinfo und die von uns eingestellte Zone wird durch die Datei /etc/timezone oder /etc/localtime bestimmt. Daraus gewinnt der Rechner die Informationen über den Zeitversatz gegenüber UTC und die Angaben über die Sommer/Winterzeitregeln.
Links


Zwei Uhren auf jedem Rechner

  • Auf jedem Rechner befindet sich auf dem Motherboard eine Hardware- oder CMOS-Uhr. Diese wird durch eine kleinen Akku betrieben der auch die Daten des BIOS stützt. Diese Uhr läuft unabhängig vom Zustand des Rechners, also auch wenn der Rechner ausgeschalten und sogar vom der Stromversorgung getrennt ist kontinuierlich weiter. Diese CMOS-Uhren sind meistens nicht besonders genau.
  • Wenn Linux gestartet wird, dann wird im Linuxkern eine Systemuhr gestartet, sie errechnet den Zeittakt aus einer internen Prozesortaktung. Alle Zeitangaben bezieht Linux während des Betriebes nur aus der Systemuhr. Diese Systemuhr wird beim booten des Rechners nach der internen CMOS-Uhr gestellt. Beim herunterfahren des Rechners wird die CMOS-Uhr dann auf die aktuelle Zeit der Systemuhr gestellt. Verantwortlich für das Einstellen der Systemuhr beim Booten und das stellen der CMOS-Uhr beim Beenden ist in einem SuSE Linux das Boot-Script /etc/rc.d/boot.clock


Befehle zum anzeigen und stellen der Uhr

date 
Anzeigen oder stellen der Linux Systemuhr siehe [man date]
hwclock 
Anzeigen oder stellen der CMOS-Uhr siehe [man hwclock]


Die Korrektur der Zeitdrift

Da sowohl die CMOS als auch die Kernel Uhr keine 100% Anspruch auf Ganggenauigkeit haben, es aber gerade in Zusammenarbeit mit anderen Rechnern im Netz auf möglichste Genauigkeiten ankommen kann, ist im LINUX-Uhrensystem eine Methode eingebaut, die Genauigkeit der Uhr weiter zu erhöhen.
Es wird dabei eine Driftfile benutzt, /etc/adjtime in dieser Datei werden Zeitkorrekturen registriert und die Daten in dieser File werden dazu genutzt, um die Kernel Uhr ein wenig schneller oder langsamer laufen zu lassen. Damit wird verhindert, dass es zu ungewollten Zeispüngen kommt, also das verstellen der Uhr um ganze Sekunden oder Minuten oder Stunden, in denen dann zB zeitgeplante Jobs doppelt oder gar nicht ausgeführt werden könnten. Sollte also die Systemuhr des Rechner nach 1 Woche 5 Minuten falsch laufen, und diese Zeit dann manuell korrigiert werden, dann wird Linux sich in Zukunft darum bemühen diese Korrektur durch bremsen oder beschleunigen der Systemuhr selbst durchzuführen. Wenn nach einem Monat dann noch einmal einige Sekunden korrigiert werden, wird LINUX das mit einfließen lassen. Damit sollte die Uhr jetzt eine für viele Anwendungen ausreichende Genauigkeit haben.


Zeitkorrektur nach größeren Abweichungen

die automatischen Zeitkorrektur über die Datei /etc/adjtime bringt bei sehr großen Zeitkorrekturen oder mehrfachen Zeitkorrekturen innerhalb kurzer Zeit die Systemuhr aus dem Takt. Sollte also die Systemuhr in Linux einmal vollkommen falsch gehen, oder größere Korrekturen vorgenommen werden müssen, ist immer die /etc/adjtime mit zu löschen. ( wird automatisch von Linux wieder angelegt)<br\>

dann wie folgt vorgehen nach einem HOWTO von Luxus

  • Als root einloggen.
  • Die Datei /etc/adjtime löschen
rm /etc/adjtime
  • Mit dem Programm hwclock die Hardware-Uhr (RTC-Uhr) stellen
hwclock --set --date="[monat]/[tag]/[jahr] [stunde]:[min]:[sek]" --utc

(Die Option --utc steht für Universalzeit; so wird automatisch die Sommerzeit berücksichtigt.)

  • Die Systemuhr nach der Hardware-Uhr stellen
hwclock --hctosys
  • Die System Uhr überprüfen und kleine Korrekturen nach einiger Zeit ausgleichen.
  • Die System Uhr soll man nach einiger Zeit (frühestens einer Woche) nochmal korrigieren

weitere Infos