Eine korrekte Systemzeit ist aus diversen Gründen wichtig. So werden bei einer falschen Systemzeit Aufgaben (z.B. Backups) plötzlich während des Tages ausgeführt, die Logfiles loggen mit falschen Zeitangaben oder eine E-Mail trifft ein, bevor sie geschrieben wurde.
Am besten wird die Systemzeit mit Hilfe eines Referenz-Zeitgebers synchronisiert. Vor allem wenn es sich um einen unbeaufsichtigten Server handelt, sollte man nicht auf eine solche Synchronisation verzichten.
Der Befehl „date“ verwaltet und nutzt die Systemzeit, die nicht mit der Hardware-Zeit (RTC / Real-Time-Clock) verwechselt werden sollte. Diese beiden Zeiten müssen nämlich nicht unbedingt automatisch synchron sein.
Systemzeit manuell Konfigurieren
Dies geschieht mit dem Befehl „date“, dass ohne Parameter das aktuelle Datum und die Uhrzeit ausgibt.
mgblog@X201 ~ $ date Mit Aug 6 14:29:05 CEST 2014
Die Uhrzeit und das Datum können einfach geändert werden. Hierzu gibt man als Parameter für „date“ die codierte Zeit und das Datum mit. Die Codierung entspricht dem Muster MMDDhhmm. Das Jahr kann mit zwei oder vier Stellen angehängt werden.
mgblog@X201 ~ $ date 06081429052014 Mit Aug 6 14:29:05 CEST 2014
Erkennt „date“ ein „+“, wird die darauf folgende Zeichenkette ausgegeben und die Variablen mit den entsprechenden Daten gefüllt.
date "+Heute ist der %d.%m.%Y. Das ist der %j. Tag des aktuellen Jahres." Heute ist der 06.08.2014. Das ist der 218. Tag des aktuellen Jahres.
Diese Funktion kann auch verwendet werden, um beispielsweise Logdateien mit dem Jahr im Dateinamen zu generieren. Dies würde (z.B. in einem Script oder in der Crontab) so ähnlich aussehen:
logdatei`date +%Y`
Date unterstützt noch viele weitere Variablen, die man auf der manpage (man date) oder mit „date -help“ angezeigt bekommt.
Die wichtigsten Variablen
Kürzel | Bedeutung |
%H | Stunden (00-23) |
%M | Minuten (00-59) |
%S | Sekunden (00-59) |
%d | Tag im Monat (00-31) |
%m | Monat (00-12) |
%y | Zweistelliges Jahr (00-99) |
%Y | Vollständige Jahreszahl |
RTC-Uhr einstellen
Um die Uhrzeiten zwischen Systemzeit und Hardware-Zeit abzugleichen, wird der Befehl „hwclock“ verwendet. Der Syntax ist einfach aufgebaut: sys-to-hc / hc-to-sys ergeben die Optionen „systohc“ und „hctosys“, wie folgende Beispiele zeigen. Damit „hwclock“ auf die Hardware-Uhr zugreifen kann, werden auf den meisten Systemen root-Rechte benötigt.
hwclock --systohc hwclock -w
hwclock --hwtosys hwclock -s
hwclock --show Mit 06 Aug 2014 17:23:12 CEST -0.668122 seconds
Wie die Zeit entsprechend den lokalen Gegebenheiten eingestellt wurd (UTC und Lokale Zeit), wird hier gezeigt.
NTP – Network Time Protocol
Auf der Webseite von pool.ntp.org sind die verfügbaren Timeserver aufgelistet und können nach Standort ausgewählt werden. Hier sollte möglichst ein Server in der Nähe ausgewählt werden (möglichst niedrige Verbindungs-Latenz).
Auf NTP werde ich in einem eigenen Artikel genauer eingehen.