Jak zmienić ustawienia strefy czasowej z wiersza poleceń

221

Mam maszynę wirtualną ustawioną na PST, którą ma kilku kolegów w różnych strefach czasowych.

Jeśli chcę zmienić strefę czasową na EST i GMT , co muszę zrobić?

manyxcxi
źródło

Odpowiedzi:

288

Posługiwać się timedatectl

sudo timedatectl set-timezone <timeszone>

Przykłady:

  • Strefa czasowa jako EST

    sudo timedatectl set-timezone EST
    
  • Strefa czasowa jako UTC

    sudo timedatectl set-timezone UTC
    
  • Lista wszystkich ważnych stref czasowych

    timedatectl list-timezones
    

To polecenie jest idealne dla skryptów automatyzacji, ponieważ nie wymaga interakcji użytkownika w porównaniu z innymi podanymi odpowiedziami dpkg-reconfigure tzdata.

Jossef Harush
źródło
1
Nie jestem fanem komentarzy +1, ale umieszczam tutaj jeden, ponieważ działało to dla mnie w najlepszy sposób. Chciałem raczej jednego wiersza poleceń w jednym wierszu, aby zmienić strefę czasową, niż chciałem uruchomić całe menu lub program GUI (nie wiem co to tzdatadziała, jak to działa, ale nie muszę tego robić polecenie jednowierszowe). Dzięki!
Phil Ryan
działa jak urok;)
user332660
Co ciekawe, robi coś nieco innego niż tzdata. Miałem problem z tym, że czas Java różni się od czasu systemowego po zastosowaniu poprawki. Tzdata nie działał, aby rozwiązać problem, ale tak się stało.
Daniel Bower,
1
to nie działało dla mnie; jednak dpkg-reconfigurezałatwiło sprawę.
Antti Haapala,
14.04.4 serwer Ubuntu
Antti Haapala
40

Jako root musisz wykonać:

dpkg-reconfigure tzdata

Należy uruchomić narzędzie oparte na menu, które pozwala zmienić strefę czasową.

maxschlepzig
źródło
32

Następujące również działają. W przypadku GMT:

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

W przypadku EST:

ln -sf /usr/share/zoneinfo/EST /etc/localtime
pm_labs
źródło
8
Myślę, że lepiej byłoby połączyć jeden z plików miejskich niż GMT lub EST, ponieważ wtedy będą śledzić czas letni, podczas gdy łączenie (np.) GMT nie zmieni czasu systemowego, aby odzwierciedlić, kiedy obowiązuje czas letni w Twoim mieście. np .:ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
Asfand Qazi
to jest najlepsze
Hasan Tıngır
16

Najłatwiejszym sposobem, szczególnie na serwer, jest wyszczególnienie stref czasowych:

timedatectl list-timezones

I wybierz swój, na przykład:

timedatectl set-timezone Europe/Athens

Otóż ​​to! , :-)

Dimitrios
źródło
6

Aby uruchomić jeden program z innym ustawieniem strefy czasowej, ustaw TZzmienną środowiskową, np. Uruchom, TZ=Pacific/Kiritimati dateaby zobaczyć, która jest godzina na Wyspie Bożego Narodzenia lub export TZ=Pacific/Kiritimatiaby ustawienie trwało dla sesji powłoki.

Gilles
źródło
6

Edytuj timezoneplik w /etcfolderze jako:

Etc/GMT

Możesz użyć następnego formatu:

Region "/" City 

Przykład /etc/timezone:

Europe/Athens

lub

Europe/Paris
Europe/London

Możesz eksperymentować z: dpkg-reconfigure tzdata i sprawdzić plik strefy czasowej kota.

Musisz ponownie uruchomić lub ponownie uruchomić usługę (nie usługę NTTP). Nie wiem który. Jeśli ktoś wie, podziel się z nami. (Testowane na Ubuntu 15.10 zmiana jest uwzględniana natychmiast)

chasapis.christos
źródło
4
cp -p /usr/share/zoneinfo/US/Pacific /etc/localtime

Polecam ZNOWU linkowanie, jak wspomniano przez innych. Jeśli jakiś skrypt przypadkowo /etc/localtimenadpisuje plik, wówczas zastępuje on plik strefy czasowej Pacyfiku ... i zastąpienie go jest trochę uciążliwe.

Wystarczy skopiować plik Pacific na plik czasu lokalnego za pomocą powyższego polecenia.

J Roysdon
źródło
To faktycznie działało dla mnie. Myślę, że jest jakiś błąd w Dockerze, ansible (?). Zarówno timedatectl, jak i dpkg-reconfigure tzdata dla mnie nie powiodły się. Po skopiowaniu strefa czasowa zmieniła się z EST na PDT.
niedz.
2

Używam następującego skryptu, aby zapytać użytkownika, którą strefę czasową ustawić, a następnie potwierdzić, że rzeczywiście została ustawiona:

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

Nazywam to tz-set.

Tom Hale
źródło
0

Jako root musisz wykonać:

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

Stefan Sebastian
źródło
Wyjaśnij przynajmniej, jak działa to polecenie, aby zmienić strefę czasową.
Parto
0

To działało dla mnie na GCP Ubuntu 14 przez SSH

  1. sudo su
  2. cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
  3. Uruchom ponownie serwer
  4. Gotowy
Vignesh Chinnaiyan
źródło