Wie kann man unter Linux überprüfen, in welcher Zeitzone ich mich gerade befinde?
Gibt es eine Möglichkeit, unter Linux zu überprüfen, in welcher Zeitzone ich mich gerade befinde?
Gibt es eine Möglichkeit, unter Linux zu überprüfen, in welcher Zeitzone ich mich gerade befinde?
Wenn Sie die numerische Zeitzone wünschen:
date +'%:z %Z'
Beispielausgabe:
-05:00 EST
Ich wollte die Zeitzone stattdessen in der Form “US/Eastern” oder “Europa/London” finden. Sie können dies finden in:
ZONE="US/Eastern"
in /etc/sysconfig/clock Normalerweise wird Ihnen die Umgebungsvariable TZ
etwas Nützliches sagen. Es ist jedoch am besten, Funktionen wie mktime()
und localtime()
zu verwenden, um zwischen time_t
und einer lokalen Zeitzonendarstellung zu konvertieren. Das heißt, versuchen Sie nicht, die Konvertierung selbst durchzuführen.
Für Ubuntu versuchen Sie dies :
$ cat /etc/timezone
Beispielausgabe :
Asia/Kolkata
Für andere Distro Referenz : https://unix.stackexchange.com/questions/110522/timezone-setting-in-linux
Manchmal suchen Sie vielleicht eher nach der kanonischen Zeitzone als nach der Kurzform, wie sie z.B. von date %Z
produziert wird. Auf Systemen mit US/Eastern
, z.B. Fedora, gibt timedatectl
viele nützliche Informationen aus, einschließlich der aktuellen Zone:
# timedatectl
Local time: Tue 2016-09-13 17:10:26 EDT
Universal time: Tue 2016-09-13 21:10:26 UTC
RTC time: Tue 2016-09-13 21:10:26
Time zone: US/Eastern (EDT, -0400)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
Leider nimmt timedatectl
timedatectl
als Befehl, hat aber keine entsprechende set-timezone
. Analysieren Sie sie wie folgt:
# timedatectl status | grep "zone" | sed -e 's/^[]*Time zone: \(.*\) (.*)$//g'`
US/Eastern
$ strings /etc/localtime | tail -n 1
MST7MDT,M3.2.0,M11.1.0
Ich bin also bei Mountain Time. Obwohl die obigen Ratschläge zur Verwendung von Umgebungsvariablen oder einfach der Ausgabe von Datumsbefehlen manchmal besser funktionieren, je nachdem, wie Sie diese verwenden wollen.
Für die Zeitzone können Sie die Geolokalisierung verwenden:
$ curl https://ipapi.co/timezone
America/Chicago
oder:
$ curl http://ip-api.com/line?fields=timezone
America/Chicago
Sie können das Datum und die Zeitzone gleichzeitig anzeigen:
date +'%d/%m/%Y %H:%M:%S [%:z %Z]'
Manchmal aktualisiert timedatectl set-timezone
nicht /etc/timezone
, daher ist es am besten, die Tiemzone aus dem Namen der Datei zu ermitteln, auf die der Symlink /etc/timezone
zeigt:
#!/bin/bash
set -euo pipefail
if filename=$(readlink /etc/localtime); then
# /etc/localtime is a symlink as expected
timezone=${filename#*zoneinfo/}
if [[$timezone = "$filename" || ! $timezone =~ ^[^/]+/[^/]+$ ]]; then
# not pointing to expected location or not Region/City
>&2 echo "$filename points to an unexpected location"
exit 1
fi
echo "$timezone"
else # compare files by contents
# https://stackoverflow.com/questions/12521114/getting-the-canonical-time-zone-name-in-shell-script#comment88637393_12523283
find /usr/share/zoneinfo -type f ! -regex ".*/Etc/.*" -exec \
cmp -s {} /etc/localtime \; -print | sed -e 's@.*/zoneinfo/@@' | head -n1
fi
Verweise: in dieser Antwort .
Die Verwendung von TZ oder Datum IST NICHT ZUVERLÄSSIG, da sie Ihnen die Zeitzone des BENUTZERS und nicht die Standard-Systemzeitzone angibt.
Die Standard-Systemzeitzone wird in /etc/timezone gespeichert (was oft ein symbolischer Link zu der für die Zeitzone spezifischen Zeitzonendatendatei ist). Wenn Sie keine /etc/timezone haben, sehen Sie sich /etc/localtime an. Im Allgemeinen ist das die Zeitzone des “Servers”. /etc/localtime ist oft ein Symlink zu einer Zeitzonendatei in /usr/share/zoneinfo. Dieser Pfad zu der korrekten Zeitzonendatei wird Ihnen oft auch geographische Informationen liefern.
Neuere Linux-Systeme haben “timedatectl”, das Ihnen tonnenweise Informationen liefert, wenn der Befehl ausgeführt wird.
(als Nebenknoten, wenn Sie ein altes System haben, das immer noch die hart kodierten OLD-Zeitzonen benutzt, können Sie wahrscheinlich eine moderne Zeitzonendatei darauf kopieren und es wird funktionieren. Ich musste das schon viele Male tun, um wechselnde Zeitzonen auf älteren Geräten zu lösen).