Odpowiedzi:
Narzędzie, które okazało się łatwiejsze w użyciu, to dpkg-reconfigure
. Posługiwać się:
sudo dpkg-reconfigure tzdata
Otrzymasz wiele możliwości wyboru, w tym niektóre, które nie zostały uwzględnione tzselect
.
Jest to przypuszczalnie nieco późno w przypadku PO, a bardziej przeznaczone dla innych poszukiwaczy, którzy tu przybywają.
Jeśli potrzebujesz rozwiązania nieinteraktywnego, wypróbuj to rozwiązanie, zmieniając strefę czasową za pomocą dpkg-reconfigure tzdata i debconf-set-selections
echo "Europe/Zurich" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Możesz dowiedzieć się o swojej strefie czasowej, szukając w / usr / share / zoneinfo. W rzeczywistości powyższe polecenie dpkg-reconfigure kopiuje odpowiedni plik z tego miejsca do / etc / localtime. Zwykle robiłem to ręcznie i wydaje się, że działa dobrze.
Nie zdziw się, jeśli długo działające procesy nie zauważą zmiany. np. przychodzą mi na myśl znaczniki czasu dziennika Apache. Zastanów się, czy to ma znaczenie, a zatem czy musisz ponownie uruchomić uruchomione procesy, a nawet uruchomić ponownie.
/etc/localtime
nie istnieje. Jeśli istnieje i jest softlink do /usr/share/zoneinfo/whatever
, jest traktowany jako baza i /etc/localtime
jest odpowiednio aktualizowany, zastępując zmiany.
Aby edytować go interaktywnie w najnowszych wersjach Debiana i Ubuntu (Stretch / Xenial itp.), Musisz również usunąć /etc/localtime
, w przeciwnym razie /etc/timezone
zostanie zastąpiony.
echo 'Europe/Zurich' > /etc/timezone
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
Ta odpowiedź jest oparta na odpowiedzi mc0e. Nie mogę dodać komentarza do mojej reputacji.
TL; DR
echo "TZ=Etc/UTC" >> /etc/environment
tzconfig
gdzie Etc/UTC
jest twoja preferowana strefa czasowa, którą znalazłeś tzselect
.
Dłuższa wersja
Kiedy używasz
dpkg-reconfigure tzdata
informacje o strefie czasowej nie są przechowywane po ponownym uruchomieniu. Możesz zweryfikować swoje ustawienia za pomocą
diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Jeśli tylko aktualizujesz /etc/timezone
, aktualizacja nie będzie zgodna /etc/localtime
, dlatego lepiej wykonać
tzconfig
Użyj, tzselect
aby dowiedzieć się, które strefy czasowe faktycznie istnieją (lub po prostu przeglądaj /usr/share/zoneinfo
katalog).
W systemach POSIX TZ
powinny mieć pierwszeństwo przed /etc/localtime
:
export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018
Korzystanie bezpośrednio TZ
pozwala zaoszczędzić wiele wywołań systemowych, ponieważ często używane funkcje związane z datą / czasem muszą uzyskiwać dostęp do systemu plików za każdym razem, gdy jakiś program prosi o podanie bieżącej daty. To mikrooptymalizacja, ale dość prosta.
TZ
w pliku profilu powoduje utworzenie dowiązania symbolicznego? Z mojego doświadczenia wcale to nie brzmi prawdziwie. Być może miałeś na myśli „Upewnij się także, aby utworzyć dowiązanie symboliczne ...”?
$TZ
zmienna jest odczytywana przez glibc
funkcje: gnu.org/software/libc/manual/html_node/TZ-Variable.html
echo "TZ=Etc/UTC" >> /etc/environment
? brakuje ci TZ=
części ... (jeśli ktoś nadal używa starożytnych wersji Debiana). Ponadto, nieinteraktywne rzeczy, takie jak demony, nadal używałyby /etc/localtime
wersji zamiast jednego zestawu w TZ
...