So ändern Sie die Zeitzoneneinstellungen über die Befehlszeile


221

Ich habe eine virtuelle Maschine, die auf PST eingestellt ist , die einige Kollegen in verschiedenen Zeitzonen haben.

Was muss ich tun, wenn ich die Zeitzone in EST und GMT ändern möchte?

Antworten:


288

Verwenden timedatectl

sudo timedatectl set-timezone <timeszone>

Beispiele:

  • Zeitzone als EST

    sudo timedatectl set-timezone EST
    
  • Zeitzone als UTC

    sudo timedatectl set-timezone UTC
    
  • Auflistung aller gültigen Zeitzonen

    timedatectl list-timezones
    

Dieser Befehl ist ideal für Automatisierungsskripten, da keine Benutzerinteraktion erforderlich ist, während er mit der anderen gegebenen Antwort verglichen wird, die auf basiert dpkg-reconfigure tzdata.


1
Ich bin kein Fan von +1 Kommentaren, aber ich setze hier einen, da dies für mich am besten funktioniert hat. Ich wollte ein einziges einzeiliges Befehlszeilentool, um die Zeitzone zu ändern, anstatt ein ganzes Menü oder GUI-Programm zu starten (ich weiß nicht, was tzdatafunktioniert, wie es funktioniert, aber ich muss es nicht tun) einzeiliger Befehl). Vielen Dank!
Phil Ryan

funktioniert wie ein Zauber;)
User332660

Interessanterweise macht es etwas anderes als tzdata. Ich hatte ein Problem mit der Java-Zeit, die sich von der Systemzeit nach dem Anwenden eines Patches unterschied. Tzdata hat nicht funktioniert, um das Problem zu beheben, aber dies tat es.
Daniel Bower

1
das hat bei mir nicht funktioniert; aber das dpkg-reconfigurehat den Trick gemacht.
Antti Haapala

14.04.4 Ubuntu Server
Antti Haapala

40

Als root müssen Sie ausführen:

dpkg-reconfigure tzdata

Es sollte ein menübasiertes Tool gestartet werden, mit dem Sie die Zeitzone ändern können.


32

Folgendes funktioniert auch. Für GMT:

ln -sf /usr/share/zoneinfo/GMT /etc/localtime

Für EST:

ln -sf /usr/share/zoneinfo/EST /etc/localtime

8
Ich denke, es wäre besser, eine der Stadtdateien als GMT oder EST zu verknüpfen, da sie dann die Sommerzeit verfolgen, wohingegen die Verknüpfung von (z. B.) GMT die Systemzeit nicht ändert, um zu reflektieren, wenn die Sommerzeit wirksam ist in deiner Stadt. zB:ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
Asfand Qazi

Das ist das Beste
Hasan Tıngır

16

Der einfachste Weg, insbesondere zu einem Server, ist das Auflisten von Zeitzonen:

timedatectl list-timezones

Und wähle deine, zum Beispiel:

timedatectl set-timezone Europe/Athens

Das ist es! , :-)


6

Um ein Programm mit einer anderen Zeitzoneneinstellung auszuführen, legen Sie die TZUmgebungsvariable fest, z. B. um TZ=Pacific/Kiritimati datedie Uhrzeit auf der Weihnachtsinsel anzuzeigen oder export TZ=Pacific/Kiritimatium die letzte Einstellung für eine Shell-Sitzung zu erhalten.


6

Bearbeiten Sie die timezoneDatei im /etcOrdner wie folgt:

Etc/GMT

Sie können das nächste Format verwenden:

Region "/" City 

Beispiel von /etc/timezone:

Europe/Athens

oder

Europe/Paris
Europe/London

Sie können mit: experimentieren dpkg-reconfigure tzdata und die Zeitzonendatei überprüfen.

Sie müssen einen Dienst neu starten oder neu starten (nicht den NTP-Dienst). Ich weiß nicht welche. Wenn jemand weiß, teilen Sie uns dies bitte mit. (Getestet unter Ubuntu 15.10 wird die Änderung sofort berücksichtigt)


4
cp -p /usr/share/zoneinfo/US/Pacific /etc/localtime

Ich empfehle gegen Verlinkung wie von anderen erwähnt. Wenn ein Skript versehentlich Ihre /etc/localtimeDatei überschreibt, überschreibt es Ihre Pacific-Zeitzonendatei ... und es ist ein bisschen mühsam, sie zu ersetzen.

Kopieren Sie einfach die Pacific-Datei mit dem obigen Befehl über die localtime-Datei.


Das hat bei mir tatsächlich funktioniert. Ich denke, es gibt einen Fehler mit Docker, anfällig (?). Sowohl timedatectl als auch dpkg-reconfigure tzdata sind für mich fehlgeschlagen. Nach dem Kopieren wurde die Zeitzone von EST in PDT geändert.
So,

2

Ich verwende das folgende Skript, um den Benutzer zu fragen, welche Zeitzone eingestellt werden soll, und bestätige dann, dass sie tatsächlich eingestellt wurde:

#!/bin/sh
sudo timedatectl set-timezone $(tzselect)
echo
echo timedatectl says:
timedatectl

Ich nenne es tz-set.


0

Als root müssen Sie ausführen:

ln -fs /usr/share/zoneinfo/Europe/Warsaw /etc/localtime && dpkg-reconfigure --frontend noninteractive tzdata


Bitte erklären Sie zumindest, wie dieser Befehl zum Ändern der Zeitzone funktioniert.
Parto

0

Dies funktionierte für mich auf GCP Ubuntu 14 via SSH

  1. sudo su
  2. cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
  3. Starten Sie den Server neu
  4. Getan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.