Ich möchte die Zeitzone der Systemuhr vom Terminal aus ändern.
Dies kann mit erfolgen
tzselect
"was eine GUI im Terminal öffnet"
oder
sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime
"was auf gmt gesetzt wird"
Aber gibt es eine Möglichkeit, die Zeitzone nur mit dem Offset einzustellen, dh-1 oder +5 usw.?
Ich muss dies tun, während ich eine Anwendung zum Anpassen von Timeoffset- oder Berichtsprotokollen schreibe. Die einzigen Informationen, die ich habe, sind die Benutzer-IP-Adressen. Ich kann eine Web-App verwenden, um den Ort der IP zu finden, aber dann muss ich den Versatz einstellen, was einfach wäre, wenn ich nur den Versatz des Ortes erhalten könnte, aber wenn ich Zone und Stadt finden müsste, wäre es ein echtes Problem .
Wenn jemand die Antwort auf das Einstellen der Systemuhr mit +/- Stunde weiß, wäre das großartig.
Antworten:
Um die Zeitzone vom Terminal aus zu ändern, drücken Sie einfach Ctrl+ Alt+ Tauf Ihrer Tastatur, um das Terminal zu öffnen. Führen Sie beim Öffnen die folgenden Befehle aus:
Befolgen Sie nach dem Öffnen einfach die Anweisungen auf dem Bildschirm, um die Zeitzone zu ändern.
quelle
Sie können auch die neue verwenden
timedatectl
, um die Uhrzeit in 14.04 einzustellen.quelle
ls -R --group-directories-first /usr/share/zoneinfo
. (Achten Sie darauf, hier keine Datei zu ändern oder zu löschen.) Weitere Informationen zuposix
undright
Präfixe finden Sie hier .sudo timedatectl set-timezone Etc/UTC
für UTC.Sie können die GMT ± x- Dateien in verwenden
/usr/share/zoneinfo/Etc
.quelle
/etc/timezone
.sudo dpkg-reconfigure --frontend noninteractive tzdata
Mir ist klar, dass dieser Thread etwas veraltet ist, aber ich suchte nach einer besseren Lösung, da ich die Zeitzone in einer VM automatisch festlegen musste, nachdem ein Benutzer sie von unserer Website heruntergeladen und bereitgestellt hatte. Folgendes ist mir eingefallen:
Dadurch wird geoip.ubuntu.com vom Server abgefragt, sobald er im neuen Netzwerk gestartet wurde (mein Skript prüft zuerst, ob Konnektivität besteht), und anschließend wird die Zeitzone des Servers basierend auf der Antwort festgelegt.
Der Befehl "wget -q0 -" weist wget an, nur die Ergebnisse an stdout auszugeben, die dann an die Variable $ tz weitergeleitet werden.
Hoffe es hilft jemandem!
quelle
TL; DR
/etc/localtime
ist ein symbolischer Link, der auf eine Datei in verweist/usr/share/zoneinfo/Continent/City
. Durch Ändern der Position können Sie Ihre Zeitzone ändern.Um die Zeitzone zu ändern, entfernen Sie den
/etc/localtime
Link und weisen Sie der gewünschten Stadt einen symbolischen Link zu. Beispielsweise wirdls -l /etc/localtime
berichtet, dass diese Datei auf verweist/usr/share/zoneinfo/America/Denver
. Um es nach New York zu ändern, tue ichsudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
Der Screenshot unten zeigt die Schritte und Bestätigung von
timedatectl
quelle
tzdata
, weshalb es sinnlos ist, dasselbe vorzuschlagen . Zweitenstzdata
macht so ziemlich das Gleiche. Es liegt an den Nutzern, zu entscheiden, was sie bevorzugen. Es ist also weder besser noch schlechter - nur die Präferenz einer Person./var/lib/dpkg/info/tzdata.list
, dass alle Elemente in/usr/share/zoneinfo
diesem Paket enthalten sind, würde ich davon ausgehen, dass Sie das Paket installieren müssen, um alle Elemente zu haben, aber ehrlich gesagt bin ich mir nicht ganz sicher und weiß nicht genau, wie dies bei anderen funktioniert Verteilungen. Überlegen Sie, ob Sie dies unter Unix & Linux als Frage stellen möchten, und verweisen Sie auf diesen Beitrag, wenn Sie den Kontext für die Frage bereitstellen möchten.Die einfache Möglichkeit, die Zeitzone zu aktualisieren, ist die Verwendung von
sudo dpkg-reconfigure tzdata
. Dies ist jedoch nicht so einfach zu skripten.Wenn Sie die Zeitzone explizit über ein Skript festlegen möchten (z. B. zum Einrichten einer VM), finden Sie hier ein Rezept:
Stellen Sie eine Variable für die gewünschte Zeitzone ein, z. B. eine von
Gültige Werte sind die Verzeichnisse und Dateinamen unter
/usr/share/zoneinfo
.Dann einfach
Beachten Sie, dass beide
/etc/localtime
und/etc/timezone
konsistent sein müssen.Führen Sie jetzt wahrscheinlich einen Neustart durch, um alle Ihre Dienste zu aktualisieren (z. B. cron).
quelle
cp
/ etc / localtime. / etc / localtime ist ein Symlink zur richtigen Datei. Wenn Siecp
sie ändern, werden Sie tatsächlich den Inhalt der TZDATA-Datei überfrachten, auf die sie aktuell verweist. Daher enthält die UTC-TZDATA-Datei plötzlich (z. B.) Zeitzonendaten für Europa / London anstatt für UTC, was schlecht (und ärgerlich) ist zur Fehlerbehebung, wie ich aus eigener Erfahrung sagen kann)Hier ist die Methode, die ich verwende und die auf die USA ausgerichtet ist, da ich mich nicht um Zeitzonen außerhalb der USA kümmern muss.
Wenn ich die aktuelle Zeitzone ermitteln muss, tue ich Folgendes:
oder
Ich mache dann:
wo
<_designation_>
ist einer der folgenden:USA / Ost-
USA / Zentral-
USA / Berg-
USA / Pazifik-
USA / Alaska-
USA / Aleuten-
USA / Arizona-
USA / Ost-Indiana-
USA / Hawaii-
USA / Indiana-Starke-
USA / Michigan-
USA / Pazifik-Neue-
USA / Samoa
Z.B:
Weitere Zeitzonenbezeichnungen finden Sie hier: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
quelle
tzselect
ist ein guter Weg, um die Zeitzone Zeichenfolge zu bekommenDies ist nur möglich, wenn Sie die Zeitzonendatei auswählen, die jedem Zeitzonenversatz entsprechen soll.
Einige Antworten schlugen die Verwendung der Dateien in / usr / share / zoneinfo / Etc vor, aber das Problem mit diesen ist, dass sie DST-Agnostiker sind.
Wenn Sie also nicht für jeden Versatz eine Zeitzonenkonfiguration auswählen oder sich nicht für die Sommerzeit interessieren, können Sie dies nicht generisch tun.
quelle