cryeffect.net

Zeitzone in Linux ändern – Systemzeit konfigurieren über Terminal

Übersicht: Zeitzone in Linux ändern

Was ist eine Zeitzone in Linux?

Die Zeitzone bestimmt, wie Uhrzeit und Datum in deinem Linux-System dargestellt und interpretiert werden. du berücksichtigt geografische Lage, Sommerzeit und lokale Zeitstandards. Wichtig ist die Unterscheidung: Die Systemuhr liefert die Zeitbasis, die eingestellte Zeitzone legt fest, wie diese Zeit lokal angezeigt wird.

Warum ist die richtige Zeitzone wichtig?

  • Logs und Timestamps: Korrekte Zeitstempel in Systemlogs und Anwendungen
  • Geplante Aufgaben: Cron-Jobs und Timer funktionieren zur erwarteten Zeit
  • Synchronisation: Wichtig für Datenbanken und verteilte Systeme
  • Compliance: Rechtliche Anforderungen für Zeitstempel
  • Benutzererfahrung: Korrekte Zeitanzeige für lokale Nutzer

Wie prüft man die aktuelle Zeitzone?

Mit timedatectl (systemd-Systeme)

1
timedatectl

Beispielausgabe:

1
2
3
4
5
6
7
               Local time: So 2025-08-17 14:35:42 CEST
Universal time: So 2025-08-17 12:35:42 UTC
RTC time: So 2025-08-17 12:35:42
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Alternative Methoden

1
2
3
4
5
6
7
8
# Eindeutige Zeitzone anzeigen
timedatectl show --property=Timezone --value

# Verweis auf die aktive Zone prüfen
readlink -f /etc/localtime

# Zeitzonen-Abkürzung anzeigen
date +%Z

Hinweis: Die Datei /etc/timezone gibt es vor allem auf Debian- und Ubuntu-basierten Systemen. Auf anderen Distributionen ist meist der Link /etc/localtime die verlässlichere Quelle.

Verfügbare Zeitzonen finden

Alle Zeitzonen auflisten

1
timedatectl list-timezones

Nach Region filtern

1
2
3
4
5
6
7
8
9
10
11
# Europa
timedatectl list-timezones | grep Europe

# Amerika
timedatectl list-timezones | grep America

# Asien
timedatectl list-timezones | grep Asia

# Spezifische Stadt suchen
timedatectl list-timezones | grep -i london

Häufige Zeitzonen

RegionZeitzoneBeschreibung
DeutschlandEurope/BerlinMEZ/MESZ
GroßbritannienEurope/LondonGMT/BST
USA OstküsteAmerica/New_YorkEST/EDT
USA WestküsteAmerica/Los_AngelesPST/PDT
JapanAsia/TokyoJST
AustralienAustralia/SydneyAEST/AEDT

Zeitzone ändern

Mit timedatectl (empfohlen)

1
2
3
4
5
# Zeitzone setzen
sudo timedatectl set-timezone Europe/London

# Sofortige Überprüfung
timedatectl status

Die Änderung wirkt sofort. Ein Neustart ist in der Regel nicht erforderlich.

Beispiele für verschiedene Zeitzonen

1
2
3
4
5
6
7
8
9
10
11
# Deutschland
sudo timedatectl set-timezone Europe/Berlin

# USA Ostküste
sudo timedatectl set-timezone America/New_York

# Japan
sudo timedatectl set-timezone Asia/Tokyo

# UTC (Server-Standard)
sudo timedatectl set-timezone UTC

Alternative Methoden (ohne systemd oder distributionsspezifisch)

Debian und Ubuntu

1
2
# Interaktiven Dialog für tzdata öffnen
sudo dpkg-reconfigure tzdata

Generisch über /etc/localtime

1
2
3
4
5
# Backup der aktuellen Konfiguration
sudo cp /etc/localtime /etc/localtime.backup

# Neue Zeitzone verlinken
sudo ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime

Auf Debian und Ubuntu kann zusätzlich /etc/timezone gepflegt werden. Auf vielen anderen Distributionen existiert diese Datei nicht.

Umgebungsvariable (temporär)

1
2
3
4
5
6
# Nur für aktuelle Sitzung
export TZ='Europe/London'
date

# In Shell-Profil für dauerhaft
echo 'export TZ="Europe/London"' >> ~/.bashrc

Container und virtuelle Umgebungen

Docker Container

Wichtig: Die Umgebungsvariable TZ funktioniert nur zuverlässig, wenn die Zeitzonendaten im Image vorhanden sind, zum Beispiel durch das Paket tzdata.

1
2
3
4
5
6
7
8
9
10
# Bei Container-Start
docker run -e TZ=Europe/Berlin ubuntu:latest date

# Volume für Zeitzone
docker run -v /etc/localtime:/etc/localtime:ro ubuntu:latest date

# In Dockerfile (Debian/Ubuntu-basiert)
RUN apt-get update && apt-get install -y tzdata && rm -rf /var/lib/apt/lists/*
ENV TZ=Europe/Berlin
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

Bei Alpine, Distroless oder anderen Minimal-Images unterscheiden sich Paketmanager und Pfade. Dort musst du die Zeitzonendaten passend zur Basis-Distribution einrichten.

Kubernetes

1
2
3
4
5
6
7
8
apiVersion: v1
kind: Pod
spec:
containers:
- name: app
env:
- name: TZ
value: "Europe/Berlin"

NTP und Zeitsynchronisation

Die Zeitsynchronisation ist ein eigenes Thema: NTP ändert nicht die Zeitzone, sondern sorgt dafür, dass die Uhrzeit korrekt bleibt.

NTP-Status prüfen

1
2
3
4
5
6
7
8
9
# NTP-Synchronisation prüfen
timedatectl show-timesync --all

# Alternativ auf neueren systemd-Versionen
timedatectl timesync-status

# NTP aktivieren/deaktivieren
sudo timedatectl set-ntp true
sudo timedatectl set-ntp false

Typische Werkzeuge zur Zeitsynchronisation

1
2
3
4
5
6
7
8
9
# systemd-timesyncd neu anstoßen
sudo systemctl restart systemd-timesyncd

# chrony-Status prüfen
chronyc tracking
chronyc sources -v

# Zeit mit chrony sofort korrigieren
sudo chronyc -a makestep

ntpdate gilt auf vielen aktuellen Distributionen als veraltet oder ist nicht mehr vorinstalliert.

Hardware Clock (RTC) konfigurieren

RTC-Einstellungen

1
2
3
4
5
6
7
8
# RTC auf UTC setzen (empfohlen für Linux)
sudo timedatectl set-local-rtc false

# RTC auf lokale Zeit setzen (nur bei bewusstem Dual-Boot-Setup)
sudo timedatectl set-local-rtc true

# RTC-Status prüfen
hwclock --show

Für Dual-Boot mit Windows ist UTC in der RTC meist die sauberste Lösung, wenn beide Systeme entsprechend konfiguriert sind.

Häufige Probleme und Lösungen

Zeitzone wird nicht übernommen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Aktuellen Status prüfen
timedatectl status

# Eindeutige Zeitzone ausgeben
timedatectl show --property=Timezone --value

# Ziel des Symlinks prüfen
readlink -f /etc/localtime

# Prüfen, ob die gewünschte Zone vorhanden ist
ls /usr/share/zoneinfo/Europe/Berlin

# Überprüfung
date

Verschiedene Zeitzonen in Logs

1
2
3
4
5
# Logs mit spezifischer Zeitzone anzeigen
TZ='UTC' journalctl --since today

# Zeitzone für bestimmte Anwendung
TZ='America/New_York' ./myapp

Permission-Probleme

1
2
3
4
5
6
# Prüfen, ob Root-Rechte vorhanden sind
sudo -v

# Relevante Dateien prüfen
ls -la /etc/localtime
ls -la /etc/timezone

Fehlt /etc/timezone, ist das nicht automatisch ein Fehler. Auf vielen Distributionen reicht /etc/localtime vollkommen aus.

Tipps

  • Verwende UTC für Server und Produktionssysteme
  • Dokumentiere Zeitzone-Änderungen für das Team
  • Teste Anwendungen nach Zeitzone-Änderungen
  • Richte bei Dual-Boot mit Windows beide Systeme möglichst konsistent auf UTC aus
  • Backup wichtiger Konfigurationsdateien vor Änderungen
  • Prüfe regelmäßig NTP-Synchronisation
  • Trenne gedanklich zwischen Zeitzone, Uhrzeit und NTP-Synchronisation

Fazit

Die Zeitzone lässt sich in Linux meist einfach über timedatectl verwalten. Für moderne systemd-basierte Systeme ist das die empfohlene Methode. Auf Systemen ohne systemd oder in speziellen Umgebungen wie Containern erfolgt die Konfiguration oft über /etc/localtime, distributionsspezifische Werkzeuge oder zusätzliche Pakete wie tzdata. Entscheidend ist, Zeitzone, Uhrzeit und NTP-Synchronisation sauber voneinander zu trennen.