.\" -*- coding: UTF-8 -*- .\" hwclock.8.in -- man page for util-linux' hwclock .\" .\" 2015-01-07 J William Piggott .\" Authored new section: DATE-TIME CONFIGURATION. .\" Subsections: Keeping Time..., LOCAL vs UTC, POSIX vs 'RIGHT'. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH HWCLOCK 8 "Juli 2017" util\-linux System\-Administration .SH BEZEICHNUNG hwclock \- Zeituhren\-Hilfswerkzeug .SH ÜBERSICHT \fBhwclock\fP [\fIFunktion\fP] [\fIOption\fP …] . .SH BESCHREIBUNG \fBhwclock\fP ist ein Administrationswerkzeug für die verschiedenen Uhren. Es kann die aktuelle Hardware\-Uhrzeit anzeigen, die Hardware\-Uhr auf eine angegebene Zeit stellen, die Hardware\-Uhr nach der Systemzeit stellen oder umgekehrt, eine Hardware\-Uhr\-Abweichung ausgleichen, die Zeitskala der Systemuhr korrigieren, die Zeitzone des Kernels, die NTP\-Zeitskala und die Epoche (nur Alpha) setzen und zukünftige Hardware\-Uhrwerte, basierend auf der Abweichungsrate, vorhersagen. .PP Seit v2.26 gibt es wichtige Änderungen an der Funktion \fB\-\-hctosys\fP, der Option \fB\-\-directisa\fP und eine neue Option \fB\-\-update\-drift\fP wurde hinzugefügt. Lesen Sie die entsprechenden Beschreibungen unten. . .SH FUNKTIONEN Die folgenden Funktionen schließen sich gegenseitig aus, nur eine kann ausgewählt werden. Die Vorgabe ist \fB\-\-show\fP, falls keine angegeben wurde. .TP \fB\-a, \-\-adjust\fP fügt Zeit zur Hardware\-Uhr hinzu oder zieht diese ab, um eine systematische Abweichung seit dem letzten Setzen oder Anpassen der Hardware\-Uhr auszugleichen. Siehe die nachfolgende Erklärungen unter \fBDie Adjust\-Funktion\fP. . .TP \fB\-\-getepoch\fP .TQ \fB\-\-setepoch\fP Diese Funktionen sind nur für Alpha\-Maschinen. Sie sind nur durch den Linux\-Kernel\-RTC\-Treiber verfügbar. .sp Sie werden verwandt, um den Kernel\-Wert der Hardware\-Uhr\-Epoche zu lesen und zu setzen. Epoche ist das Jahr, auf dass sich der Nullwert der Hardware\-Uhr bezieht. Wenn das BIOS der Maschine zum Beispiel die Konvention verwenden, dass die Jahreszählung in der Hardware\-Uhr die Anzahl der vollen Jahre seit 1952 enthält, dann muss der Epochenwert der Hardware\-Uhr des Kernels auf 1952 gesetzt werden. .sp Die Funktion \fB\%\-\-setepoch\fP benötigt die Option \fB\%\-\-epoch\fP, um das Jahr festzulegen. Beispiel: .RS .IP "" 4 \fBhwclock\ \-\-setepoch\ \-\-epoch=1952\fP .PP Der RTC\-Treiber versucht, den korrekten Wert der Epoche zu raten, daher kann es nicht notwendig sein, ihn anzugeben. .PP Dieser Epochenwert wird verwendet, wenn \fB\%hwclock\fP die Hardware\-Uhr auf einer Alpha\-Maschine ausliest oder stellt. Für ISA\-Maschinen verwendet der Kernel die feste Hardware\-Uhr\-Epoche 1900. .RE . .TP \fB\-\-predict\fP sagt basierend auf der mit der Option \fB\-\-date\fP angegebene Zeit und der Information in \fI/etc/adjtime\fP vorher, was die Hardware\-Uhr in der Zukunft anzeigen wird. Dies ist zum Beispiel nützlich, um Abweichungen zu berücksichtigen, wenn das Hardware\-Uhr\-Aufwachen (d.h. ein Alarm) eingerichtet wird. Siehe \fB\%rtcwake\fP(8). .sp Verwenden Sie diese Funktion nicht, falls die Hardware\-Uhr durch irgendetwas anderes als den Befehl \fB\%hwclock\fP des aktuellen Betriebssystems verändert wird, wie dem »11\-Minuten\-Modus« oder durch das Starten eines anderen Betriebssystems. . .TP \fB\-r\fP,\fB\ \-\-show\fP .TQ \fB\-\-get\fP .br liest die Hardware\-Uhr und schreibt ihre Zeit in die Standardausgabe im \fBISO 8601\fP\-Format. Die angezeigte Zeit ist stets die lokale Zeit, selbst wenn Sie die Hardware\-Uhr auf die Weltzeit (UTC) eingestellt haben, siehe die Option \fB\%\-\-localtime\fP. .sp Die Anzeige der Hardware\-Uhrzeit ist die Vorgabe, falls keine Funktion angegeben ist. .sp Die Funktion \fB\-\-get\fP wendet auch Korrekturen für die Abweichung auf die eingelesene Zeit an, basierend auf Informationen aus \fI/etc/adjtime\fP. Verwenden Sie diese Funktion nicht, falls die Hardware\-Uhr von irgendetwas anderem außer dem Befehl \fB\%hwclock\fP des aktuellen Betriebssystems verändert wird, wie dem \%»11\-Minute\-Modus« oder vom Dualstarten eines anderen Betriebssystems. . .TP \fB\-s\fP,\fB\ \-\-hctosys\fP stellt die Systemuhr aus der Hardware\-Uhr. Die aus der Hardware\-Uhr eingelesene Zeit wird bezüglich der systematischen Abweichung ausgeglichen, bevor die Systemuhr gestellt wird. Lesen Sie die Diskussion weiter unten, unter \fBDie Adjust\-Funktion\fP. .sp Die Systemzeit muss in der UTC\-Zeitskala gehalten werden, damit Anwendungen im Zusammenhang mit der für das System konfigurierten Zeitzone arbeiten. Falls die Hardware\-Uhr in der lokalen Zeit gehalten wird, dann muss die daraus gelesene Zeit in die UTC\-Zeitskala verschoben werden, bevor sie zum Setzen der Systemuhr verwandt wird. Die Funktion \fB\%\-\-hctosys\fP erledigt dies basierend auf den Informationen in der Datei \fI/etc/adjtime\fP oder aus den Befehlszeilenargumenten \fB\%\-\-localtime\fP und \fB\-\-utc\fP. Hinweis: Es wird keine Sommerzeitanpassung durchgeführt. Siehe die Diskussion weiter unten unter \fBLOKAL vs. UTC\fP. .sp Der Kernel hält auch einen Zeitzonenwert, die Funktion \fB\%\-\-hctosys\fP setzt ihn auf den für das System konfigurierten Wert. Die Systemzeitzone wird durch die TZ\-Umgebungsvariable oder die Datei \fI\%/etc/localtime\fP konfiguriert, wie \fB\%tzset\fP(3) sie interpretieren würde. Das veraltete Feld »tz_dsttime« des Kernel\-Zeitzonenwerts wird auf Null gesetzt. Details zur ehemaligen Bedeutung dieses Feldes finden Sie in \fB\%settimeofday\fP(2). .sp Wird die Funktion \fB\%\-\-hctosys\fP durch Verwendung in einem Systemstartskript der erste Aufrufer von \fB\%settimeofday\fP(2), dann wird über die Kernelvariable \fI\%persistent_clock_is_local\fP der NTP\-\%»11\-Minuten\-Modus« gesetzt. Falls die Hardware\-Uhr\-Zeitskalenkonfiguration geändert wird, ist ein Systemneustart notwendig, um den Kernel zu informieren. Lesen Sie die Diskussion weiter unten unter \fBAutomatischer Abgleich der Hardware\-Uhr durch den Kernel\fP. .sp Dies ist eine gute Funktion für die Ausführung in einem der Startskripte des Systems bevor die Dateisysteme im Lese\-/Schreibmodus eingehängt werden. .sp Diese Funktion sollte niemals auf einem laufenden System verwandt werden. Springende Systemzeit führt zu Problemen, wie fehlerhaften Dateisystemzeitstempeln. Falls auch etwas die Hardware\-Uhr geändert hat, wie NTPs \%»11\-Minuten\-Modus«, dann wird \fB\%\-\-hctosys\fP die Zeit durch Berücksichtigung der Abweichungsausgleichung inkorrekt einstellen. .sp Die Abweichungsausgleichung kann durch Setzen des Abweichungsfaktors in \fI/etc/adjtime\fP auf Null unterdrückt werden. Diese Einstellung ist dauerhaft, solange wie die Option \fB\%\-\-update\-drift\fP nicht zusammen mit \fB\%\-\-systohc\fP beim Herunterfahren des Systems (oder irgendwann sonst) verwandt wird. Eine andere Möglichkeit, dies zu unterdrücken besteht durch die Option \fB\%\-\-noadjfile\fP beim Einsatz der Funktion \fB\%\-\-hctosys\fP. Eine dritte Methode besteht im Löschen der Datei \fI/etc/adjtime\fP. \fBHwclock\fP wird dann standardmäßig die UTC\-Zeitskala für die Hardware\-Uhr verwenden. Falls die Hardware\-Uhr in lokaler Zeit läuft, muss das in dieser Datei definiert werden. Dies kann durch Aufruf von \fBhwclock\ \-\-localtime\ \-\-adjust\fP erfolgen. Wenn die Datei nicht vorhanden ist, wird dieser Befehl nicht wirklich die Uhr anpassen sondern wird die Datei mit der konfigurierten lokalen Zeit und einem Abweichungsfaktor von Null anlegen. .sp Eine Bedingung, unter der die Abweichungskorrektur von \fBhwclock\fP verhindert werden sollte, könnte beim Dualstart von mehreren Betriebssystemen vorliegen. Falls, während diese Instanz von Linux angehalten ist, ein anderes Betriebssystem die Hardware\-Uhr stellt, dann wird die Abweichungskorrektur nach dem Start dieser Instanz bei der Anwendung inkorrekt sein. .sp Damit die Abweichungskorrektur von \fBhwclock\fP korrekt funktioniert, ist es zwingend, dass nichts die Hardware\-Uhr ändert, während die Linux\-Instanz nicht läuft. . .TP \fB\-\-set\fP setzt die Hardware\-Uhr auf die durch die Option \fB\-\-date\fP angegebene Zeit und aktualisiert die Zeitstempel in \fI/etc/adjtime\fP. Mit der Option \fB\%\-\-update\-drift\fP wird der Abweichungsfaktor (neu) berechnet. Versuchen Sie, die Option wegzulassen, falls \fB\%\-\-set\fP fehlschlägt. Siehe \fB\%\-\-update\-drift\fP unten. . .TP \fB\-\-systz\fP Dies ist eine Alternative zu der Funktion \fB\%\-\-hctosys\fP, die nicht die Hardware\-Uhr liest und nicht die Systemzeit setzt. Entsprechend gibt es auch keine Korrektur der Abweichung. Sie ist für Hochfahrskripte auf Systemen mit Kerneln höher als 2.6 gedacht, bei denen Sie wissen, dass die Systemuhr bereits vom Kernel während des Systemstarts aus der Hardware\-Uhr gesetzt wurde. .sp Dies führt die folgenden Dinge aus, die weiter oben in der Funktion \fB\%\-\-hctosys\fP beschrieben sind: .RS .IP \(bu 2 Korrigiert die Systemuhrzeitskala auf UTC wie benötigt. Anstatt aber dies durch Setzen der Systemuhr zu erreichen, informiert \fBhwclock\fP einfach den Kernel und der kümmert sich um die Änderung. .IP \(bu 2 Setzt die NTP \%»11\-Minuten\-Modus«\-Zeitskala des Kernels .IP \(bu 2 Setzt die Zeitzone des Kernels .PP Die ersten zwei sind nur beim ersten Aufruf von \fB\%settimeofday\fP(2) nach dem Systemstart verfügbar. Konsequenterweise ergeben diese Optionen nur bei der Verwendung in Systemstartskripten Sinn. Falls die Hardware\-Uhr\-Zeitskalenkonfiguration geändert wird, ist ein Systemneustart notwendig, um den Kernel zu informieren. .RE . .TP \fB\-w\fP,\fB\ \-\-systohc\fP setzt die Hardware\-Uhr aus der Systemuhr und aktualisiert die Zeitstempel in \fI/etc/adjtime\fP. Mit der Option \fB\-\-update\-drift\fP wird auch der Abweichungsfaktor (neu) berechnet. Versuchen Sie es ohne die Option, falls \fB\%\-\-systohc\fP fehlschlägt. Siehe \fB\%\-\-update\-drift\fP weiter unten. . .TP \fB\-V\fP,\fB\ \-\-version\fP zeigt Versionsinformationen an und beendet das Programm. . .TP \fB\-h\fP,\fB\ \-\-help\fP zeigt einen Hilfetext an und beendet das Programm. . .SH OPTIONEN . .TP \fB\-\-adjfile=\fP\fIDateiname\fP setzt den vorgegebenen Dateipfad \fI/etc/adjtime\fP außer Kraft. . .TP \fB\%\-\-date=\fP\fIDatumszeichenkette\fP Diese Option muss zusammen mit den Funktionen \fB\-\-set\fP oder \fB\%\-\-predict\fP verwandt werden, andernfalls wird sie ignoriert. .RS .IP "" 4 \fBhwclock\ \-\-set\ \-\-date='16:45'\fP .IP "" 4 \fBhwclock\ \-\-predict\ \-\-date='2525\-08\-14\ 07:11:05'\fP .PP Das Argument muss in lokaler Zeit sein, selbst wenn Sie Ihre Hardware\-Uhr in UTC halten. Siehe die Option \fB\%\-\-localtime\fP. Daher sollte das Argument keine Zeitzoneninformationen enthalten. Es sollte auch keine relative Zeit wie »+5 minutes« sein, da \fB\%hwclock\fPs Genauigkeit von dem Zusammenhang zwischen dem Wert des Arguments und dem Zeitpunkt, zu dem die Eingabetaste gedrückt wird, abhängt. Sekundenbruchteile werden ohne Rückmeldung abgeschnitten. Diese Option kann viele Zeit\- und Datumsformate erkennen, aber die vorhergehenden Parameter sollten beachtet werden. .RE . .TP \fB\%\-\-delay=\fP\fISekunden\fP Diese Option erlaubt es, die intern verwandte Verzögerung beim Setzen der Uhrzeit zu ändern. Die Vorgabe ist 0.5 (500 ms) für rtc_cmos, für andere RTC\-Typen ist die Verzögerung 0. Falls der RTC\-Typ nicht (aus Sysfs) bestimmt werden kann, dann ist die Vorgabe aufgrund der Rückwärtskompatibilität auch 0.5. .RS .PP Die Standardverzögerung von 500 ms basiert auf der häufig verwandten, MC146818A\-kompatiblen (X86\-)Hardwareuhr. Die Hardwareuhr kann nur auf ganzzahlige Zeiten plus eine halbe Sekunde gesetzt werden. Die Ganzzahlzeit ist notwendig, da es keine Schnittstelle gibt, um Sekundenbruchteile zu setzen oder abzufragen. Die zusätzliche halbe Sekunde Verzögerung erfolgt, da die Hardwareuhr sich auf die folgende Sekunde genau 500 ms nach dem Setzen der neuen Zeit aktualisiert. Unglücklicherweise ist dieses Verhalten hardwareabhängig und in einigen Fällen wird eine andere Verzögerung benötigt. .RE . .TP \fB\-D\fP, \fB\-\-debug\fP Verwenden Sie \fB\-\-verbose\fP. Die Option \fB\%\-\-debug\fP ist veraltet und kann in einer zukünftigen Veröffentlichung einer neuen Verwendung zugeführt oder entfernt werden. . .TP \fB\-\-directisa\fP Diese Option ist auf ISA\-kompatiblen Maschinen (einschließlich X86 und X86_64 von Bedeutung. Auf anderen Maschinen hat sie keine Auswirkungen. Diese Option weist \fB\%hwclock\fP explizit an, E/A\-Anweisungen für den Zugriff auf die Hardware\-Uhr vorzunehmen. Ohne diese Option versucht \fB\%hwclock\fP, die RTC\-Gerätdatei zu verwenden, wobei angenommen wird, dass diese mit dem Linux\-RTC\-Gerätetreiber läuft. Seit v2.26 wird er nicht mehr automatisch directisa verwenden, wenn der RTC\-Treiber nicht verfügbar ist. Dies führte zu unsicheren Bedingungen, die es erlaubten, dass zwei Prozesse auf die Hardware\-Uhr gleichzeitig zugreifen konnten. Direkter Hardware\-Zugriff aus dem Benutzerraum sollte nur zum Testen, zur Fehlersuche und als letzte Rettung, wenn alle anderen Methoden fehlschlagen, verwandt werden. Siehe die Option \fB\-\-rtc\fP. . .TP \fB\-\-epoch=\fP\fIJahr\fP Diese Option ist notwendig, wenn die Funktion \fB\%\-\-setepoch\fP verwandt wird. Das minimale \fIJahr\fP ist 1900. Das maximale ist systemabhängig (\fBULONG_MAX\ \-\ 1\fP). . .TP \fB\-f\fP,\fB\ \-\-rtc=\fP\fIDateiname\fP Setzt den Vorgabe\-RTC\-Dateinamen von \fB\%hwclock\fP außer Kraft. Andernfalls wird der erste aus der folgenden Liste (in dieser Reihenfolge) verwandt: .in +4 .br \fI/dev/rtc0\fP .br \fI/dev/rtc\fP .br \fI/dev/misc/rtc\fP .br .in Für \fBIA\-64:\fP .in +4 .br \fI/dev/efirtc\fP .br \fI/dev/misc/efirtc\fP .in . .TP \fB\-l\fP,\fB\ \-\-localtime\fP .TQ \fB\-u\fP, \fB\-\-utc\fP zeigt an, auf welche Zeitskala die Hardware\-Uhr gesetzt ist. .sp Die Hardware\-Uhr kann konfiguriert sein, entweder UTC oder die lokale Zeitskala zu verwenden, allerdings gibt es nichts in der Uhr, das angibt, welche der Varianten gewählt wurde. Die Optionen \fB\%\-\-localtime\fP und \fB\-\-utc\fP übergeben diese Information an den Befehl \fB\%hwclock\fP. Falls Sie das Falsche angeben (oder keines angeben und die falsche Voreinstellung nehmen), werden sowohl das Setzen als auch das Lesen der Hardware\-Uhr inkorrekt sein. .sp Falls Sie weder \fB\-\-utc\fP noch \fB\%\-\-localtime\fP angeben, dann wird die zuletzt mit der Setzen\-Funktion (\fB\-\-set\fP, \fB\%\-\-systohc\fP oder \fB\%\-\-adjust\fP) verwendete benutzt, wie dies in \fI/etc/adjtime\fP aufgezeichnet ist. Falls die adjtime\-Datei nicht existiert, wird UTC als Vorgabe verwendet. .sp Hinweis: Zeitübergangs\-Änderungen können inkonsistent sein, falls die Hardware\-Uhr in lokaler Zeit betrieben wird. Lesen Sie die Diskussion weiter unten unter \fBLOKAL vs. UTC\fP. . .TP \fB\-\-noadjfile\fP deaktiviert die von \fI/etc/adjtime\fP bereitgestellten Leistungen. \fB\%hwclock\fP liest oder schreibt nicht in diese Datei, wenn diese Option angegeben ist. Entweder \fB\-\-utc\fP oder \fB\%\-\-localtime\fP müssen mit dieser Option angegeben werden. . .TP \fB\-\-test\fP ändert tatsächlich nichts am System, d.h. die Uhren oder \fI/etc/adjtime\fP (diese Option impliziert \fB\%\-\-verbose\fP). . .TP \fB\-\-update\-drift\fP aktualisiert den Abweichungsfaktor der Hardware\-Uhr in \fI/etc/adjtime\fP. Sie kann nur zusammen mit \fB\-\-set\fP oder \fB\%\-\-systohc\fP verwandt werden. .sp Zwischen Einstellungen ist minimal ein Abstand von vier Stunden notwendig. Damit werden ungültige Berechnungen vermieden. Je länger die Periode, desto präziser wird der sich ergebende Abweichungsfaktor sein. .sp Diese Option wurde in v2.26 hinzugefügt, da typischerweise auf Systemen beim Herunterfahren \fB\%hwclock\ \-\-systohc\fP aufgerufen wird. Mit dem alten Verhalten würde dabei automatisch der Abweichungsfaktor (neu) berechnet werden, wodurch mehrere Probleme entstanden: .RS .IP \(bu 2 Wird NTP mit einem \%»11\-Minuten\-Modus«\-Kernel verwandt, würde der Abweichungsfaktor auf fast Null verfremdet. .IP \(bu 2 Es würde nicht die Verwendung von »kalter«\-Abweichungskorrektur erlauben. Bei den meisten Konfigurationen führt die »kalte« Abweichungskorrektur zu besseren Ergebnissen. Kalt bedeutet, wenn die Maschine ausgeschaltet ist, was eine wesentliche Auswirkung auf den Abweichungsfaktor haben kann. .IP \(bu 2 (Neu\-)Berechnung des Abweichungsfaktors bei jedem Herunterfahren führt zu suboptimalen Ergebnissen. Führen beispielsweise kurzzeitige Bedingungen dazu, dass die Maschine ungewöhnlich heiß wird, wäre die Abweichungsfaktorberechnung außerhalb des Gültigkeitsbereichs. .IP \(bu 2 Signifikant erhöhte System\-Runterfahrzeiten (bei v2.31 wird die RTC nicht gelesen, wenn \fB\%\-\-update\-drift\fP nicht verwandt wird). .PP Die Berechnung des Abweichungsfaktors durch \fB\%hwclock\fP ist ein guter Start, aber für optimale Ergebnisse wird wahrscheinlich die Datei \fI/etc/adjtime\fP direkt bearbeitet werden müssen. Bei den meisten Konfigurationen braucht die Abweichung nicht mehr verändert zu werden, sobald der optimale Abweichungsfaktor erstellt wurde. Daher wurde das alte Verhalten, die Abweichung automatisch (neu) zu berechnen, geändert und benötigt nun dafür eine Option. Lesen Sie die Diskussion weiter unten unter \fBDie Adjust\-Funktion\fP. .PP Diese Option benötigt die Hardwareuhr vor ihrem Setzen. Falls sie nicht gelesen werden kann, wird diese Option zum Fehlschlag der Setzen\-Funktion führen. Dies kann beispielsweise passieren, falls die Hardwareuhr durch einen Stromausfall beschädigt ist. In diesem Fall muss die Uhr zuerst ohne diese Option gesetzt werden. Abgesehen davon, dass sie nicht funktioniert, wäre der daraus resultierende Abweichungsfaktor sowieso ungültig. .RE . .TP \fB\-v\fP, \fB\-\-verbose\fP zeigt mehr Details über die internen Vorgänge von \fB\%hwclock\fP an. . .SH ANMERKUNGEN . .SS "Uhren in einem Linux\-System" Es gibt zwei Arten von Datum\-Zeit\-Uhren: .PP \fBDie Hardware\-Uhr\fP: Diese Uhr ist ein unabhängiges Hardware\-Gerät, mit seinem eigenen Energiebereich (Batterie, Kondensatoren, usw.), das läuft, wenn die Maschine ausgeschaltet oder sogar vom Netz getrennt ist. .PP Auf einem ISA\-kompatiblen System wird diese Uhr als Teil des ISA\-Standards spezifiziert. Ein Steuerprogramm kann diese Uhr nur in ganzen Sekunden stellen oder auslesen, aber es kann auch die Signalübergänge der Ein\-Sekunden\-Impulse erkennen, so dass die Uhr über virtuell unendliche Präzision verfügt. .PP Diese Uhr wird allgemein die Hardware\-Uhr, die Echtzeituhr, die RTC, die BIOS\-Uhr oder die CMOS\-Uhr genannt. Der Begriff Hardware\-Uhr wurde für \fB\%hwclock\fP gewählt. Der Linux\-Kernel bezeichnet sie auch als beständige Uhr. .PP Einige Nicht\-ISA\-Systeme haben ein paar Echtzeituhren, wobei nur eine davon ihre eigene Energieversorgung hat. Ein sehr energiesparender externer I²C\- oder SPI\-Uhrchip könnte mit einer Stützbatterie als Hardware\-Uhr fungieren, um eine funktionellere integrierte Echtzeituhr zu initialisieren, die für die meisten anderen Zwecke verwendet wird. .PP \fBDie Systemuhr\fP: Diese Uhr ist Teil des Linux\-Kernels und wird durch einen Timer\-Interrupt gesteuert (auf einer ISA\-Maschine ist der Timer\-Interrupt Teil des ISA\-Standards). Sie ist nur von Bedeutung, solange Linux auf der Maschine läuft. Die Systemzeit wird als die Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00:00 Uhr Weltzeit ausgedrückt, oder anders formuliert, die Anzahl der seit 1969 UTC vergangenen Sekunden. Die Systemzeit ist dennoch keine Ganzzahl. Sie hat virtuell unbegrenzte Präzision. .PP Die Systemzeit ist die Zeit, auf die es ankommt. Der grundlegende Zweck der Hardware\-Uhr in einem Linux\-System ist die Erhaltung der Zeit, wenn Linux nicht läuft, so dass die Systemzeit beim Systemstart daraus initialisiert werden kann. Beachten Sie, dass in DOS, wofür der ISA\-Standard entworfen wurde, die Hardware\-Uhr die einzig verfügbare Echtzeituhr ist. .PP Es ist wichtig, dass die Zählung der Systemzeit nicht unterbrochen wird, zum Beispiel wenn Sie mit dem Befehl \fB\%date\fP(1) die Systemzeit setzen, während das System läuft. Sie können dennoch im laufenden Betrieb mit der Hardware\-Uhr tun, was Sie wollen, und beim nächsten Linux\-Start wird die Zeit der Hardware\-Uhr entsprechend angepasst. Hinweis: Derzeit ist dies auf den meisten Systemen nicht möglich, da beim Herunterfahren \fB\%hwclock\ \-\-systohc\fP aufgerufen wird. .PP Die Zeitzone des Linux\-Kernels wird durch \fBhwclock\fP gesetzt. Aber lassen Sie sich nicht in die Irre führen – beinahe niemand interessiert sich dafür, was der Kernel meint, in welcher Zeitzone er sich befindet. Stattdessen müssen Programme, für die die Zeitzone wichtig ist (um Ihnen beispielsweise die lokale Zeit anzuzeigen), fast immer einen etwas traditionelleren Weg wählen, um die Zeitzone zu ermitteln: Sie benutzen die TZ\-Umgebungsvariable oder die Datei \fI\%/etc/localtime\fP, wie in der Handbuchseite zu \fB\%tzset\fP(3) erklärt. Jedoch nutzen einige Programme und Teile des Linux\-Kernels dessen Zeitzonenwert, zum Beispiel Dateisysteme. Ein Beispiel hierfür ist das vfat\-Dateisystem. Ist der Zeitzonenwert im Kernel falsch gesetzt, werden vom vfat\-Dateisystem falsche Zeitstempel gemeldet und gesetzt. Ein weiteres Beispiel ist der NTP\-11\-Minuten\-Modus\-Modus des Kernels. Falls der Zeitzonenwert des Kernels und/oder die Variable \fI\%persistent_clock_is_local\fP falsch ist, dann wird die Hardware durch den 11\-Minuten\-Modus\-Modus falsch gesetzt. Lesen Sie hierzu die Diskussion weiter unten, unter \fBAutomatischer Abgleich der Hardware\-Uhr durch den Kernel\fP. .PP \fB\%hwclock\fP setzt den Kernel\-Zeitzonenwert auf den durch die Umgebungsvariable TZ oder aus \fI\%/etc/localtime\fP mit den Funktionen \fB\%\-\-hctosys\fP oder \fB\%\-\-systz\fP angegebenen Wert. .PP Der Zeitzonenwert des Kernels besteht aus zwei Teilen: erstens dem Feld »tz_minuteswest«, das die Anzahl der Minuten angibt, die die lokale Zeit (nicht an Sommer\-/Winterzeit angepasst) gegenüber der Weltzeit zurückbleibt, und zweitens dem Feld »tz_dsttime«, welches angibt, ob am entsprechenden Ort gerade Sommer\- oder Winterzeit herrscht. Dieses zweite Feld wird unter Linux nicht genutzt und wird stets auf 0 gesetzt. Siehe auch \fB\%settimeofday\fP(2). . .SS "Zugriffsmethoden auf Hardware\-Uhren" \fB\%hwclock\fP verwendet viele verschiedene Arten, die Hardware\-Uhr\-Werte zu ermitteln und zu setzen. Der normale Weg besteht in E/A zu der besondere Datei des RTC\-Geräts. Dabei wird angenommen, dass diese vom RTC\-Treiber betrieben wird. Auch sind Linux\-Systeme, die das RTC\-Konzept mit Udev verwenden, in der Lage, mehrere Hardware\-Uhren zu unterstützen. Damit könnte die Notwendigkeit entstehen, das Vorgabe\-RTC\-Gerät mit der Option \fB\-\-rtc\fP außer Kraft zu setzen. .PP Allerdings ist diese Methode nicht immer verfügbar, da ältere Systeme über keinen RTC\-Treiber verfügen. Auf diesen Systemen hängt die Art des Zugriffs auf die Hardware\-Uhr von der Art der Systemhardware ab. .PP Auf einem ISA\-kompatiblen System kann \fB\%hwclock\fP direkt über Ein\- und Ausgaben der Ports 0x70 und 0x71 auf die CMOS\-Speicherregister zugreifen, welche die Uhr darstellen. Es werden E/A\-Anweisungen verwendet, was konsequenterweise nur funktionieren kann, wenn diese mit der effektiven Benutzerkennung des Superusers aufgerufen werden. Diese Methode kann durch Angabe der Option \fB\%\-\-directisa\fP festgelegt werden. .PP Dies ist eine recht armselige Methode, auf die Uhr zuzugreifen, vor allem deshalb, weil Programme auf Anwenderebene generell nicht dafür bestimmt sind, direkte E/A\-Vorgänge auszuführen und Interrupts zu deaktivieren. \fB\%hwclock\fP bietet dies zum Testen, Fehlersuchen und da es auf ISA\-kompatiblen Systemen, die über keinen funktionierenden RTC\-Gerätetreiber verfügen, die einzige verfügbare Methode sein könnte. .SS "Die Adjust\-Funktion" Die Hardware\-Uhr ist üblicherweise nicht sehr genau. Jedoch lässt sich die Genauigkeit recht gut vorhersagen – sie geht jeden Tag die gleiche Zeit vor oder nach. Dies nennt man die Systemabweichung. Mit der Funktion \fB\%\-\-adjust\fP von \fBhwclock\fP können Sie die Systemabweichung der Hardware\-Uhr korrigieren. .PP Es funktioniert folgendermaßen: \fB\%hwclock\fP verwaltet die Datei \fI/etc/adjtime\fP, in der einige historische Informationen gespeichert sind. Diese Datei wird adjtime\-Datei genannt. .PP Nehmen wir an, Sie beginnen ohne adjtime\-Datei. Sie rufen den Befehl \fB\%hwclock\ \-\-set\fP auf, um die Hardware\-Uhr auf die tatsächliche aktuelle Zeit zu stellen. \fB\%hwclock\fP legt die adjtime\-Datei an und zeichnet darin die Zeit als jene der letzten Kalibrierung der Uhr auf. Fünf Tage später geht die Uhr 10 Sekunden vor, und Sie rufen \fB\%hwclock\ \-\-set\ \-\-update\-drift\fP auf, um die Uhr 10 Sekunden zurückzustellen. \fB\%hwclock\fP aktualisiert die adjtime\-Datei, zeichnet wiederum die aktuelle Zeit als den Zeitpunkt der letzten Kalibrierung auf, wobei diesmal 2 Sekunden pro Tag als systematische Abweichung protokolliert werden. 24 Stunden später rufen Sie den Befehl \fB\%hwclock\ \-\-adjust\fP auf. \fB\%hwclock\fP befragt die adjtime\-Datei und stellt fest, dass die Uhr, wenn sie nicht korrigiert wird, 2 Sekunden pro Tag vorgeht. So zieht es die 2 Sekunden von der Zeit der Hardware\-Uhr ab, da die Uhr genau 24 Stunden nicht korrigiert wurde. Die aktuelle Zeit wird auch wieder als die Zeit der letzten Kalibrierung aufgezeichnet. Noch einmal 24 Stunden später funktioniert der Befehl \fB\%hwclock\ \-\-adjust\fP wieder auf die gleiche Weise: \fB\%hwclock\fP zieht 2 Sekunden ab und aktualisiert die adjtime\-Datei mit der aktuellen Zeit als letztem Kalibrierungszeitpunkt der Uhr. .PP Wenn Sie die Option \fB\%\-\-update\-drift\fP mit \fB\-\-set\fP oder \fB\%\-\-systohc\fP verwenden, wird die automatische Abweichungsrate durch Vergleich der vollabweichungskorrigerten Hardware\-Uhr mit der jetzt gesetzten Zeit (neu) berechnet. Daraus wird die 24\-Stunden\-Abweichungsrate basierend auf dem letzten kalibrierten Zeitstempel aus der Adjtime\-Datei abgeleitet. Dieser aktualisierte Abweichungsfaktor wird dann in \fI/etc/adjtime\fP gespeichert. .PP Kleinere Fehler schleichen sich beim Stellen der Hardware\-Uhr ein, daher unterlässt \fB\%\-\-adjust\fP Korrekturen von weniger als einer Sekunde. Wenn Sie zu einem späteren Zeitpunkt erneut die Uhr stellen wollen, wird die aufgesammelte Abweichung nun mehr als eine Sekunde betragen und \fB\%\-\-adjust\fP führt die Korrektur einschließlich eines Bruchanteils aus. .PP \fB\%hwclock\ \-\-hctosys\fP verwendet auch die Adjtime\-Dateidaten, um den Wert aus der Hardware\-Uhr auszugleichen, bevor es die Systemuhr stellt. Es teilt nicht die 1\-Sekunden\-Begrenzung von \fB\%\-\-adjust\fP und wird Teilsekundenabweichungen sofort korrigieren. Es ändert weder die Hardware\-Uhr noch die Adjtime\-Datei. Dies könnte die Notwendigkeit von \fB\%\-\-adjust\fP beseitigen, außer etwas anderes auf dem System benötigt die Ausgleichung der Hardware\-Uhr. . .SS "Die Datei Adjtime" Sie wurde wegen ihres früheren ausschließlichen Zwecks der Steuerung des Abgleichs so benannt und enthält außerdem Informationen, die \fBhwclock\fP für spätere Aufrufe speichert. .PP Die adjtime\-Datei verwendet folgendes Format, in ASCII: .PP Zeile 1: drei Zahlen, durch Leerzeichen getrennt: 1) die systematische Abweichung in Sekunden pro Tag als dezimale Fließkommazahl; 2) die sich ergebende Anzahl der Sekunden seit 1969 Weltzeit gemäß der letzten Anpassung oder Kalibrierung als dezimale Ganzzahl; 3) Null (zwecks Kompatibilität zu \fB\%clock\fP(8)) als dezimale Gleitkommazahl. .PP Zeile 2: eine Zahl: die sich ergebende Anzahl der Sekunden seit 1969 Weltzeit gemäß der letzten Kalibrierung. Dies ist Null, falls noch keine Kalibrierung ausgeführt wurde oder eine frühere Kalibrierung fehlschlug (zum Beispiel wurde die Hardware\-Uhr seit der Kalibrierung zwar gefunden, enthielt aber keine gültige Zeit). Dies ist eine dezimale Ganzzahl. .PP Zeile 3: »UTC« oder »LOCAL«. Dies gibt an, ob die Hardware\-Uhr auf lokale Zeit oder Weltzeit eingestellt ist. Sie können diesen Wert stets mit den Befehlszeilenoptionen zu \fB\%hwclock\fP außer Kraft setzen. .PP Sie können eine adjtime\-Datei, die früher bereits mit dem Programm \fB\%clock\fP(8) genutzt wurde, auch mit \fB\%hwclock\fP verwenden. . .SS "Automatischer Abgleich der Hardware\-Uhr durch den Kernel" Es gibt auf einigen Systemen einen weiteren Weg, die Hardware\-Uhr synchron zu halten. Der Linux\-Kernel verfügt über einen Modus, in dem in Abständen von 11 Minuten die Systemzeit in die Hardware\-Uhr kopiert wird. Dieser Modus wird beim Kompilieren ausgewählt, daher werden nicht alle Kernel über diese Fähigkeit verfügen. Dieser Modus ist sinnvoll, wenn Sie etwas Fortschrittliches wie NTP verwenden, um die Systemuhr synchron zu halten. (NTP bezeichnet die Synchronisation der Systemzeit entweder über einen Zeitserver im Netzwerk oder über eine an Ihrem System angeschlossene Funkuhr, siehe RFC 1305.) .PP Falls der Kernel mit der Option \%»11\-Minuten\-Modus« übersetzt ist, wird er aktiv sein, wenn sich die Uhrdisziplin des Kernels in einem synchronisierten Zustand befindet. In diesem Zustand ist das Bit 6 (das Bit, das mit der Maske 0x0040 gesetzt wird) der Kernelvariablen \fI\%time_status\fP nicht gesetzt. Der Wert wird als »Status«\-Zeile der Befehle \fB\%adjtimex\ \-\-print\fP oder \fB\%ntptime\fP ausgegeben. .PP Es bedarf eines Einflusses von außen, wie des NTP\-Daemons, um die Uhrdisziplin des Kernels in einen synchronisierten Status zu bringen und damit den \%» 11\-Minuten\-Modus« zu aktivieren. Dieser kann durch die Ausführung von allem, die die Systemuhr auf die althergekommene Art setzt, wie \fB\%hwclock\ \-\-hctosys\fP, wieder ausgeschaltet werden. Falls der NTP\-Daemon allerdings noch läuft, wird er den \%» 11\-Minuten\-Modus« beim nächsten Synchronisieren der Systemuhr wieder einschalten. .PP Falls Ihr System mit aktiviertem \%»11\-Minuten\-Modus« läuft, könnte die Verwendung von entweder \fB\%\-\-hctosys\fP oder \fB\%\-\-systz\fP in den Systemstartskripten notwendig sein, insbesondere falls die Hardware\-Uhr auf die lokale Zeitskala konfiguriert ist. Falls der Kernel nicht informiert ist, unter welcher Zeitskala die Hardware\-Uhr läuft, könnte er sie mit der falschen verfremden. Der Kernel verwendet standardmäßig UTC. .PP Der erste Benutzerraumbefehl, der die Systemuhr setzt, informiert den Kernel, welche Zeitskala die Hardware\-Uhr verwendet. Dies passiert über die Kernelvariable \fI\%persistent_clock_is_local\fP. Falls \fB\%\-\-hctosys\fP oder \fB\%\-\-systz\fP der Erste ist, wird es diese Variable entsprechend der Adjtime\-Datei oder dem geeigneten Befehlszeilenargument setzen. Beachten Sie, dass der Einsatz dieser Fähigkeit erfordert, dass bei Änderung der Hardware\-Uhr\-Zeitskalenkonfiguration ein Systemneustart zur Information des Kernels benötigt wird. .PP \fB\%hwclock\ \-\-adjust\fP sollte nicht zusammen mit NTPs \%»11\-Minute\-Modus« verwandt werden. . .SS "Jahrhundertwert der ISA\-Hardware\-Uhr" Es gibt eine Art von Standard, der das CMOS\-Speicherbyte 50 auf einer ISA\-Maschine als Anzeiger für das aktuelle Jahrhundert verwendet. \fB\%hwclock\fP nutzt oder setzt dieses Byte nicht, da es einige Maschinen gibt, die das Byte nicht auf diese Weise definieren und es sowieso unnötig ist. Das year\-of\-century leistet gute Arbeit beim Ermitteln des aktuellen Jahrhunderts. .PP Falls Sie einen echten Anwendungsfall für das CMOS\-Century\-Byte haben, kontaktieren Sie den Betreuer von \fB\%hwclock\fP, eine Option könnte hier zweckdienlich sein. .PP Beachten Sie, dass dieser Abschnitt nur relevant ist, wenn Sie die »Direct ISA«\-Methode für den Zugriff auf die Hardware\-Uhr verwenden. ACPI bietet eine standardisierte Zugriffsmöglichkeit auf die Jahrhundertwerte an, sofern diese von der Hardware unterstützt werden. . .SH DATUM\-ZEIT\-KONFIGURATION .in +4 .SS "Zeit ohne externe Synchronisation erhalten" .in .PP Diese Diskussion basiert auf den folgenden Annahmen: .IP \(bu 2 Es läuft nichts, das die Echtzeituhren ändert, wie ein NTP\-Daemon oder ein Cron\-Job. .IP \(bu 2 Die Systemzeitzone ist für die korrekte lokale Zeit konfiguriert. Siehe unten unter \fBPOSIX kontra »KORREKT«\fP. .IP \(bu 2 Früh während des Systemstarts wird folgendes in dieser Reihenfolge aufgerufen: .br \fB\%adjtimex\ \-\-tick\fP\fI\ Wert\ \fP\fB\-\-frequency\fP\fI\ Wert\fP .br \fB\%hwclock\ \-\-hctosys\fP .IP \(bu 2 Während des Herunterfahrens wird folgendes aufgerufen: .br \fB\%hwclock\ \-\-systohc\fP .PP .in +4 \fB*\fP Systeme ohne \fBadjtimex\fP können \fBntptime\fP verwenden. .in .PP Egal, ob eine Präzisionzeit mit einem NTP\-Daemon verwaltet wird oder nicht, ist es sinnvoll, das System so konfigurieren, dass es allein eine vernünftig gute Datum\-Uhrzeit hält. .PP Im ersten Schritt dafür muss ein klares Verständnis des Gesamtbildes erreicht werden. Es gibt zwei komplett getrennte Hardwaregeräte, die alleine in ihrer eigenen Geschwindigkeit laufen und von der »korrekten« Zeit mit ihrer eigenen Rate abweichen. Die Methoden und Software für die Abweichungskorrektur unterscheiden sich für beide. Allerdings sind die meisten Systeme so konfiguriert, dass die beiden Uhren beim Systemstart und \-herunterfahren die Werte austauschen. Dadurch werden die Fehlerkorrekturwerte der einzelnen Geräte zwischen beiden hin und her übertragen. Wird versucht, nur bei einem von ihnen eine Abweichungskorrektur vorzunehmen, wird die Abweichung des anderen Geräts darübergelegt. .PP Dieses Problem kann bei Konfiguration der Abweichung der Systemuhr vermieden werden, indem die Maschine nicht heruntergefahren wird. Dies und der Tatsache, dass die gesamte Präzision von \fB\%hwclock\fP (einschließlich der Berechnung des Abweichungsfaktors) von der Korrektheit der Systemuhrrate abhängt, bedeutet, dass die Konfiguration der Systemuhr zuerst erfolgen sollte. .PP Die Abweichung der Systemuhr wird mit den Optionen \fB\-\-tick\fP und \fB\%\-\-frequency\fP des Befehls \fB\%adjtimex\fP(8) korrigiert. Diese zwei Optionen arbeiten zusammen: »tick« ist die grobe und »frequency« die feine Anpassung. (Für Systeme, die kein Paket \fB\%adjtimex\fP haben, kann eventuell stattdessen \fB\%ntptime\ \-f\ \fP\fIppm\fP verwandt werden.) .PP Einige Linux\-Distributionen versuchen, die Abweichung der Systemuhr mit der Vergleichsaktion von \fB\%adjtimex\fP automatisch zu berechnen. Der Versuch, eine abweichende Uhr mittels einer anderen abweichenden Uhr als Referenz zu korrigieren, gleicht dem Versuch eines Hundes, seinen eigenen Schwanz zu fangen. Es mag irgendwann von Erfolg gekrönt sein, aber vorher ist großer Aufwand und viel Frust involviert. Diese Automatisierung mag eine Verbesserung gegenüber keiner Konfiguration sein, aber optimale Ergebnisse zu erwarten, wäre fehlerhaft. Eine bessere Wahl für eine manuelle Konfiguration wäre die Option \fB\-\-log\fP von \fB\%adjtimex\fP. .PP Es mag effizienter sein, einfach die Abweichung der Systemuhr mit \fB\%sntp\fP oder \fB\%date\ \-Ins\fP und einem genauen Zeitstück nachzuverfolgen und dann die Abweichung manuell zu berechnen. .PP Nach dem Setzen der Tick\- und Frequenzwerte fahren Sie mit dem Prüfen und Verfeinern der Anpassungen fort, bis die Systemuhr eine gute Zeit hält. Siehe \fB\%adjtimex\fP(2) für weitere Informationen und ein Beispiel, das die manuelle Abweichungskorrektur zeigt. .PP Sobald der Takt der Systemuhr sauber ist, widmen Sie sich der Hardware\-Uhr. .PP In der Regel funktioniert die kalte Abweichung in den meisten Fällen am besten. Dies sollte sogar auf Maschinen zutreffen, die 24/7 laufen und deren normale Auszeit aus einem Systemneustart besteht. In diesen Fällen stellt der Abweichungsfaktor kaum einen Unterschied dar. Aber in den seltenen Fällen, in denen die Maschine für eine längere Zeit ausgeschaltet wird, sollte die kalte Abweichung zu besseren Ergebnissen führen. .PP \fBSchritte zur Berechnung der kalten Abweichung:\fP .IP 1 2 \fBStellen Sie sicher, dass kein NTP\-Daemon beim Systemstart gestartet wird.\fP .IP 2 2 Beim Herunterfahren muss die Zeit der \fISystemuhr\fP korrekt sein! .IP 3 2 Fahren Sie das System herunter. .IP 4 2 Lassen Sie eine ausgedehnte Zeit vergehen, ohne die Hardware\-Uhr zu ändern. .IP 5 2 Starten Sie das System. .IP 6 2 Verwenden Sie sofort \fBhwclock\fP, um die korrekte Zeit zu setzen, fügen Sie dabei die Option \fB\%\-\-update\-drift\fP hinzu. .PP Hinweis: Falls in Schritt 6 \fB\%\-\-systohc\fP verwandt wird, muss davor die Systemuhr korrekt gesetzt werden (Schritt 6a). .PP Die Berechnung des Abweichungsfaktors mit \fBhwclock\fP ist ein guter Startpunkt, aber für optimale Ergebnisse wird es wahrscheinlich notwendig sein, dies durch direkte Bearbeitung der Datei \fI/etc/adjtime\fP anzupassen. Fahren Sie fort, den Abweichungsfaktor zu testen und verfeinern, bis die Hardware\-Uhr beim Systemstart korrekt eingestellt ist. Um dies zu überprüfen, stellen Sie erst sicher, dass die Systemzeit vor dem Herunterfahren korrekt ist und dann verwenden Sie direkt nach dem Starten \fB\%sntp\fP oder \fB\%date\ \-Ins\fP und eine Präzisionsuhr. .SS "LOKAL vs. UTC" Wird die Hardware\-Uhr in der lokalen Zeitskala betrieben, führt dies zu inkonsistenten Sommerzeitergebnissen: .IP \(bu 2 Falls Linux während des Sommer\-/Winterzeitwechsels läuft, wird die in die Hardware\-Uhr geschriebene Zeit für die Änderung angepasst. .IP \(bu 2 Falls Linux NICHT während des Sommer\-/Winterzeitwechsels läuft, wird die von der Hardware\-Uhr gelesene Zeit NICHT für die Änderung angepasst werden. .PP Die Hardware\-Uhr auf einem ISA\-kompatiblen System hält nur ein Datum und eine Zeit. Sie kennt weder das Konzept der Zeitzone noch der Sommer\-/Winterzeit. Daher nimmt \fBhwclock\fP, wenn ihm mitgeteilt wird, dass es in lokaler Zeit läuft, an, dass es sich in der »korrekten« lokalen Zeit befindet und führt keine Anpassungen für die aus ihr gelesene Zeit durch. .PP Linux führt den Sommer\-/Winterzeitwechsel nur korrekt durch, wenn die Hardware\-Uhr in der UTC\-Zeitskala läuft. Dies wird Systemadministratoren erleichtert, da \fB\%hwclock\fP die lokale Zeit für seine Ausgabe und als Argument für die Option \fB\%\-\-date\fP verwendet. .PP POSIX\-Systeme sind wie Linux so entwickelt, dass die Systemuhr in der UTC\-Zeitskala läuft. Der Zweck der Hardware\-Uhr liegt darin, die Systemuhr zu initialisieren, daher ergibt ein Betrieb in UTC Sinn. .PP Linux versucht allerdings, die Tatsache, dass sich die Hardware in der lokalen Zeitskala befindet, zu berücksichtigen. Dies dient primär dem dualen Systemstart mit älteren Versionen von MS Windows. Seit Windows 7 soll der Registrierungsschlüssel RealTimeIsUniversal korrekt funktionieren, so dass die Hardware\-Uhr in UTC gehalten werden kann. . .SS "POSIX kontra »KORREKT«" Eine Diskussion der Datum/Zeit\-Konfiguration wäre allerdings unvollständig, ohne Zeitzonen zu behandeln. Dies wird gut in \fBtzset\fP(3) abgedeckt. Ein Punkt, für den es keine Dokumentation gibt, ist das »korrekte« Verzeichnis der Zeitzonendatenbank, manchmal auch tz oder Zoneinfo genannt. .PP Es gibt zwei getrennte Datenbanken in dem Zoneinfo\-System, POSIX und »korrekt«. »Korrekt« (jetzt Zoneinfo\-leaps genannt) enthält Schaltsekunden, POSIX nicht. Um die »korrekte« Datenbank zu verwenden, muss die Systemuhr auf \%(UTC\ +\ Schaltsekunden) gesetzt sein, was zu \%(TAI\ \-\ 10) äquivalent ist. Dies ermöglicht es, die genaue Anzahl von Sekunden zwischen zwei Daten zu berechnen, wenn dabei ein Schaltesekundenzeitraum durchlaufen wird. Die Systemuhr wird dann in die korrekte zivile Zeit, einschließlich UTC, umgewandelt, indem die »korrekten« Zeitzonendateien verwandt werden, die die Schaltsekunden abziehen. Hinweis: Diese Konfiguration wird als experimentell bezeichnet und hat bekanntermaßen Probleme. .PP Um ein System zur Verwendung einer bestimmten Datenbank zu konfigurieren, müssen alle in seinem Verzeichnis befindliche Dateien in die Wurzel von \fI\%/usr/share/zoneinfo\fP kopiert werden. Dateien werden nie vom POSIX\- oder »korrekten« Unterverzeichnis benutzt, z.B. \%TZ='\fIright/Europe/Dublin\fP'. Diese Gepflogenheit wurde so üblich, dass die Originalentwickler des Zoneinfo\-Projekts den Systemdateibaum restrukturierten, indem sie die POSIX\- und »korrekten« Unterverzeichnisse aus dem Zoeninfo\-Verzeichnis und in benachbarte Verzeichnisse verschoben: .PP .in +2 \fI/usr/share/zoneinfo\fP .br \fI/usr/share/zoneinfo\-posix\fP .br \fI/usr/share/zoneinfo\-leaps\fP .PP Unglücklicherweise ändern einige Linux\-Distributionen dies in ihren Paketen wieder auf die alte Struktur zurück. Daher besteht das Problem der Systemadministratoren, die in das »korrekte« Unterverzeichnis hineingreifen, weiter fort. Dies führt dazu, dass die Systemzeitzone konfiguriert wird, Schaltsekunden zu beachten, während die Zoneinfo\-Datenbank weiterhin so konfiguriert ist, sie auszuschließen. Wenn dann eine Anwendung wie die »World Clock« die Zeitzonendatei South_Pole benötigt oder ein E\-Mail\-MTA oder \fBhwclock\fP die UTC\-Zeitzonen\-Datei benötigen, holen sie sie von der Wurzel von \fI\%/usr/share/zoneinfo\fP, da das so von ihnen erwartet wird. Diese Dateien schließen Schaltsekunden aus, aber die Systemuhr berücksichtigt sie, wodurch eine falsche Umwandlung hervorgerufen wird. .PP Der Versuch, Dateien aus diesen getrennten Datenbanken vermischt zu benutzen, wird nicht funktionieren, da sie von der Systemuhr verlangen, eine andere Zeitskala zu verwenden. Die Zoneinfo\-Datenbank muss wie oben beschrieben konfiguriert werden, entweder die POSIX oder »korrekte« zu benutzen, oder indem der Umgebungsvariablen .SB TZDIR ein Datenbankpfad zugewiesen wird. .SH EXIT\-STATUS Eine der folgenden Rückgabewerte wird zurückgeliefert: .TP \fBEXIT_SUCCESS\fP (»0« auf POSIX\-Systemen) Erfolgreiche Programmausführung. .TP \fBEXIT_FAILURE\fP (»1« auf POSIX\-Systemen) Die Aktion ist fehlgeschlagen oder die Befehlssyntax war ungültig. .SH UMGEBUNGSVARIABLEN .TP \fBTZ\fP Falls diese Variable gesetzt ist, hat ihr Wert gegenüber der im System konfigurierten Zeitzone Vorrang. .TP \fBTZDIR\fP Falls diese Variable gesetzt ist, hat ihr Wert gegenüber dem im System konfigurierten Zeitzonendatenbankverzeichnispfad Vorrang. .SH DATEIEN .TP \fI/etc/adjtime\fP Die Konfiguration und die Zustandsdateien für Hwclock. .TP \fI/etc/localtime\fP Die Systemzeitzonendatei .TP \fI/usr/share/zoneinfo/\fP Das System\-Zeitzonen\-Datenbankverzeichnis .PP Gerätedateien, die \fBhwclock\fP für den Zugriff auf die Hardware\-Uhr versuchen darf: .br \fI/dev/rtc0\fP .br \fI/dev/rtc\fP .br \fI/dev/misc/rtc\fP .br \fI/dev/efirtc\fP .br \fI/dev/misc/efirtc\fP .SH "SIEHE AUCH" \fBdate\fP(1), \fBadjtimex\fP(8), \fBgettimeofday\fP(2), \fBsettimeofday\fP(2), \fBcrontab\fP(1p), \fBtzset\fP(3) . .SH AUTOREN Geschrieben von Bryan Henderson, September 1996 (bryanh@giraffe\-data.com), basierend auf dem Programm \fB\%clock\fP(8) von Charles Hedrick, Rob Hooft und Harald Koenig. Im Quellcode finden Sie die vollständige Geschichte einschließlich der Danksagungen. . .SH VERFÜGBARKEIT Der Befehl hwclock ist Teil des Pakets util\-linux und kann von https://www.kernel.org/pub/linux/utils/util\-linux/ heruntergeladen werden. .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann , Dr. Tobias Quathamer und Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .