• Allgemein
  • Abrufen der Uhrzeit in Linux: Methoden und gängige Befehle

Abrufen der Uhrzeit in Linux: Methoden und gängige Befehle

Befehle zum Abrufen der Uhrzeit in Linux

Wenn du die Uhrzeit in Linux abrufen möchtest, stehen dir verschiedene Befehle zur Verfügung. Diese Befehle können dir helfen, die Uhrzeit in verschiedenen Formaten anzuzeigen, sie in verschiedenen Zeitzonen zu konvertieren und die Systemzeit mit der Hardware-Uhrzeit zu synchronisieren.

Befehl date

Der Befehl date zeigt die aktuelle Systemzeit an. Er kann jedoch auch verwendet werden, um die Uhrzeit in verschiedenen Formaten anzuzeigen.

# Uhrzeit im Standardformat anzeigen
date

# Uhrzeit im ISO-Format anzeigen
date --iso-8601

# Datum und Uhrzeit im benutzerdefinierten Format anzeigen
date +%Y-%m-%d\ %H:%M:%S

Befehl time

Der Befehl time ist dem Befehl date sehr ähnlich, bietet jedoch einige zusätzliche Funktionen. Mit dem Befehl time kannst du beispielsweise die Uhrzeit messen, die ein bestimmter Befehl zum Ausführen benötigt.

# Uhrzeit messen, die der Befehl ls benötigt
time ls

# Uhrzeit messen, die der Befehl sleep 5 benötigt
time sleep 5

Befehl cal

Der Befehl cal zeigt einen Kalender für den angegebenen Monat und das angegebene Jahr an. Er kann auch verwendet werden, um die Anzahl der Tage in einem bestimmten Monat zu ermitteln.

# Kalender für den aktuellen Monat anzeigen
cal

# Kalender für den Januar 2023 anzeigen
cal 01 2023

# Anzahl der Tage im Februar 2023 anzeigen
cal 02 2023

Unterschiede zwischen den Befehlen date und time

Wenn du die Uhrzeit in Linux abrufen möchtest, stehen dir zwei Hauptbefehle zur Verfügung: date und time. Beide Befehle tun im Wesentlichen dasselbe, aber es gibt einige wichtige Unterschiede zwischen ihnen, die du beachten solltest.

Ausgabeformat

Der Hauptunterschied zwischen date und time liegt im Ausgabeformat. Der Befehl date gibt die Uhrzeit im Standardformat TT MM TT HH:MM:SS JJJJ aus, wobei TT der ausgeschriebene Wochentag, MM der ausgeschriebene Monat, TT der Tag des Monats, HH die Stunde im 24-Stunden-Format, MM die Minute und SS die Sekunde ist. Das Jahr wird als vierstellige Ziffer ausgegeben. Beispiel:

$ date
Frühersten, 29. April 2023 15:34:36 MESZ

Der Befehl time hingegen gibt die Uhrzeit im POSIX-Format [seconds since the Epoch], dh. als Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00 Uhr UTC, aus. Beispiel:

$ time
1651272092

Option -r

Der Befehl date verfügt über die Option -r, mit der du die Uhrzeit aus einem angegebenen Zeitstempel abrufen kannst. Dies ist nützlich, wenn du die Uhrzeit zu einem bestimmten Zeitpunkt in der Vergangenheit oder Zukunft wissen möchtest. Beispiel:

$ date -r 1651272092
Frühersten, 29. April 2023 15:34:36 MESZ

Der Befehl time bietet keine solche Option.

Zeitzonen

Standardmäßig gibt der Befehl date die Uhrzeit in der lokalen Zeitzone aus. Du kannst jedoch die Option -u verwenden, um die Uhrzeit in koordinierter Weltzeit (UTC) auszugeben. Der Befehl time gibt die Uhrzeit immer in UTC aus.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass der Befehl date eine benutzerfreundlichere Ausgabe im Standardformat bereitstellt, während der Befehl time eine einfache Ausgabe im POSIX-Format bietet und die Option -r zum Abrufen der Uhrzeit aus einem Zeitstempel unterstützt. Der Befehl time ist für Skripte und Programme besser geeignet, während der Befehl date für die interaktive Verwendung besser geeignet ist.

Formatierung der Uhrzeitausgabe

Wenn du die Ausgabe der Uhrzeit formatieren möchtest, kannst du die folgenden Optionen nutzen:

Strftime

Die Funktion strftime konvertiert eine tm-Struktur, die die Uhrzeitdaten enthält, in einen formatierten Text. Die Syntax lautet:

strftime(Zeichenfolge, Größe, Zeit, Umwandlungsbezeichner);

Hier sind einige gebräuchliche Umwandlungsbezeichner:

  • %a: Abgekürzter Wochentag
  • %b: Abgekürzter Monatsname
  • %d: Tag des Monats (01-31)
  • %H: Stunde (00-23)
  • %I: Stunde (01-12)
  • %M: Minute (00-59)
  • %S: Sekunde (00-59)

Beispiel

Um die Uhrzeit im Format "Donnerstag, 12. Januar 2023, 14:30" auszugeben, würde folgender Befehl verwendet:

strftime("%a, %d. %b %Y, %H:%M", %Z, %x);

Optionsbezeichner

Zusätzlich zu den Umwandlungsbezeichnern kannst du auch Optionsbezeichner verwenden, um die Ausgabe weiter zu formatieren:

  • %: Prozentzeichen (%%)
  • 0: Führt führende Nullen ein
  • -: Linksbündig
  • +: Vorzeichen für die Ausgabe
  • : Fügt ein Leerzeichen ein

Beispiel

Um die Uhrzeit im Format "14:30:00" auszugeben, würde folgender Befehl verwendet:

strftime("%H:%M:%S", %Z, %x);

Abrufen der Uhrzeit in verschiedenen Zeitzonen

Wenn du die Uhrzeit in verschiedenen Zeitzonen abrufen möchtest, stehen dir mehrere Möglichkeiten zur Verfügung.

Befehl ‚date‘

Der Befehl date bietet die Option -u zur Anzeige der koordinierten Weltzeit (UTC) und die Option -d zum Abfragen eines bestimmten Datums und einer bestimmten Uhrzeit unter Berücksichtigung der Zeitzone.

date -u  # UTC-Zeit anzeigen
date -d "2023-03-08 15:30:00 PST"  # Uhrzeit in Pacific Time anzeigen

Befehl ‚timedatectl‘

Der Befehl timedatectl bietet umfangreiche Optionen zur Verwaltung der Zeitzoneneinstellungen. Verwende die Option list-timezones zum Auflisten aller verfügbaren Zeitzonen und die Option set-timezone zum Ändern der aktuellen Zeitzone.

timedatectl list-timezones  # Alle Zeitzonen auflisten
timedatectl set-timezone America/Los_Angeles  # Zeitzone auf Pacific Time festlegen

Grafische Benutzeroberfläche

Die meisten Linux-Distributionen bieten eine grafische Benutzeroberfläche (GUI) zum Ändern der Zeitzoneneinstellungen. Du findest diese Optionen typischerweise unter den Systemeinstellungen oder im Kontrollzentrum.

Lokale Zeitzonendatenbank

Linux verwendet eine lokale Zeitzonendatenbank, um die Zeitzonendaten zu verwalten. Diese Datenbank wird regelmäßig aktualisiert, um Änderungen in den Zeitzoneneinstellungen widerzuspiegeln. Du kannst die Zeitzonendatenbank mit dem Befehl tzupdate aktualisieren.

tzupdate  # Zeitzonendatenbank aktualisieren

Abrufen der Systemzeit

Neben der Hardware-Uhrzeit verfügt Linux auch über eine Systemzeit, die vom Betriebssystem verwaltet wird. Die Systemzeit kann von einer Vielzahl von Prozessen und Anwendungen genutzt werden, um die Uhrzeit für verschiedene Zwecke zu ermitteln.

Befehle für die Systemzeit

Zur Abfrage der Systemzeit stehen dir in Linux mehrere Befehle zur Verfügung:

  • date: Dieser Befehl gibt die aktuelle Systemzeit in einem vom Gebietsschema abhängigen Format aus.
  • time: Dieser Befehl ist ähnlich wie date, gibt aber auch die Ausführungszeit des angegebenen Befehls aus.

Unterschiede zwischen date und time

Der Hauptunterschied zwischen date und time besteht darin, dass date nur die Systemzeit ausgibt, während time zusätzlich die Ausführungszeit des angegebenen Befehls ausgibt.

Formatierung der Systemzeitausgabe

Die Ausgabe der Befehle date und time kann mithilfe von Formatbezeichnern formatiert werden. Eine Liste der verfügbaren Formatbezeichner findest du in den Manpages der jeweiligen Befehle.

Beispiele

Um die aktuelle Systemzeit im ISO-8601-Format auszugeben, kannst du Folgendes verwenden:

date +%Y-%m-%dT%H:%M:%SZ

Um die Ausführungszeit des Befehls ls auszugeben, kannst du Folgendes verwenden:

time ls

Abrufen der Hardware-Uhrzeit

Die Hardware-Uhr (auch Echtzeituhr oder RTC genannt) ist ein winziger Chip auf dem Motherboard deines Computers, der die Zeit auch bei ausgeschaltetem System aufrechterhält. Sie ist in der Regel mit einer kleinen Batterie ausgestattet, die die Uhr im Speicher hält. Dies ist nützlich, um die korrekte Zeit auch nach einem Stromausfall sicherzustellen.

Unterschiede zwischen Systemzeit und Hardware-Uhrzeit

Die Systemzeit wird vom Betriebssystem verwaltet und kann durch Software oder manuelle Eingaben geändert werden. Die Hardware-Uhrzeit hingegen ist unabhängig vom Betriebssystem und läuft unabhängig von der Systemzeit weiter.

Abrufen der Hardware-Uhrzeit

Um die Hardware-Uhrzeit abzurufen, kannst du den Befehl hwclock verwenden. Dieser Befehl zeigt die aktuelle Hardware-Uhrzeit im Format hh:mm:ss an:

hwclock

Einstellen der Hardware-Uhrzeit

Du kannst die Hardware-Uhrzeit mit dem Befehl hwclock -w einstellen. Dieser Befehl setzt die Hardware-Uhrzeit auf die aktuelle Systemzeit:

hwclock -w

Synchronisieren der Systemzeit mit der Hardware-Uhrzeit

Wenn die Systemzeit und die Hardware-Uhrzeit nicht übereinstimmen, kannst du sie mit dem Befehl hwclock --systohc synchronisieren. Dieser Befehl setzt die Systemzeit auf die aktuelle Hardware-Uhrzeit:

hwclock --systohc

Tipp: Verwenden von NTP

Um eine genaue Uhrzeitbehaltung zu gewährleisten, wird empfohlen, einen NTP-Dienst (Network Time Protocol) zu verwenden. NTP synchronisiert deine Systemzeit automatisch mit einem zuverlässigen Zeitserver im Internet.

Synchronisieren der Systemzeit mit der Hardware-Uhrzeit

Die Systemzeit deines Rechners wird in der Regel von einer batteriegestützten Echtzeituhr (RTC) gehalten, die als Hardware-Uhrzeit bezeichnet wird. Diese Uhrzeit bleibt auch dann erhalten, wenn dein Computer ausgeschaltet ist.

Mitunter können jedoch Abweichungen zwischen der Systemzeit und der Hardware-Uhrzeit auftreten, insbesondere wenn die Batterie der RTC leer ist oder wenn das System längere Zeit nicht heruntergefahren wurde. Um sicherzustellen, dass die Uhrzeit korrekt ist, musst du sie möglicherweise synchronisieren.

hwclock-Befehl

Der hwclock-Befehl ermöglicht es dir, die Systemzeit mit der Hardware-Uhrzeit zu synchronisieren. Dabei kannst du vorgehen, wie folgt:

  1. Zeige die Hardware-Uhrzeit an:

    sudo hwclock --show
    
  2. Stelle die Systemzeit auf die Hardware-Uhrzeit ein:

    sudo hwclock --systohc
    
  3. Stelle die Hardware-Uhrzeit auf die Systemzeit ein:

    sudo hwclock --hctosys
    

ntpd-Dienst

Wenn du einen vernetzten Computer verwendest, kannst du auch den Network Time Protocol (NTP)-Dienst verwenden, um deine Systemzeit zu synchronisieren. NTP nutzt eine Hierarchie von Zeitservern, um die Zeit mit hoher Genauigkeit beizubehalten.

  1. Installiere den ntpd-Dienst:

    sudo apt install ntp (Ubuntu/Debian)
    sudo yum install ntp (CentOS/Red Hat)
    
  2. Starte den ntpd-Dienst:

    sudo service ntp start (systemd)
    sudo /etc/init.d/ntp start (SysV Init)
    
  3. Konfiguriere den ntpd-Dienst, um einen Zeitserver zu verwenden:
    Öffne die Konfigurationsdatei /etc/ntp.conf und füge die folgenden Zeilen hinzu:

    server ntp.pool.org
    server 0.ubuntu.pool.ntp.org
    
  4. Starte den ntpd-Dienst neu:

    sudo service ntp restart (systemd)
    sudo /etc/init.d/ntp restart (SysV Init)
    

NTP wird deine Systemzeit automatisch mit dem angegebenen Zeitserver synchronisieren.