Zmiana strefy czasowej w Debianie utrzymuje czas lokalny w UTC

27

Staram się, aby programy logowały się w czasie lokalnym dla własnego zdrowia psychicznego.

Zaktualizowałem strefę czasową o:

 dpkg-reconfigure tzdata

Ale wynikiem tego polecenia jest:

Current default time zone: 'Australia/Adelaide'
Local time is now:      Mon May 20 03:09:52 UTC 2013.
Universal Time is now:  Mon May 20 03:09:52 UTC 2013.

Zwróć uwagę na UTC wLocal time

Jest jakiś powód, dla którego to może być?

Zrobiłem dużo Googlinga, ale mój problem wydaje się inny niż wszystkie :(

Oto kilka szczegółów:

# cat /etc/timezone
Australia/Adelaide

# date
Mon May 20 03:41:06 UTC 2013

# export TZ='Australia/Adelaide'; date
Mon May 20 13:16:11 CST 2013

Ustawienie export TZ='Australia/Adelaide';w moim /etc/profilepowoduje, że datedziała domyślnie w sesji bash, ale nie zmienia daty dziennika systemu (po ponownym uruchomieniu usługi)

Edytować:

# ls -l /etc/localtime
lrwxrwxrwx 1 root root 20 May 10 14:48 /etc/localtime -> /usr/share/zoneinfo/

# ls /etc/localtime/
Adelaide    Chile    GMT        Japan      PST8PDT    Universal
Africa      Cuba     GMT+0      Kwajalein  Pacific    W-SU
America     EET      GMT-0      Libya      Poland     WET
Antarctica  EST      GMT0       MET        Portugal   Zulu
Arctic      EST5EDT  Greenwich  MST        ROC        iso3166.tab
Asia        Egypt    HST        MST7MDT    ROK        localtime
Atlantic    Eire     Hongkong   Mexico     Singapore  localtime.dpkg-new
Australia   Etc      Iceland    Mideast    SystemV    posix
Brazil      Europe   Indian     NZ         Turkey     posixrules
CET         Factory  Iran       NZ-CHAT    UCT        right
CST6CDT     GB       Israel     Navajo     US         zone.tab
Canada      GB-Eire  Jamaica    PRC        UTC

Odpowiedź:

Udało się to dzięki zacięciu. z jakiegoś powodu miałem / etc / localtime jako dowiązanie symboliczne ... IT IT tutaj skonfigurował serwer używając Turnkey 12, więc może to był problem.

# mv /etc/localtime /etc/localtime.old
# cp /usr/share/zoneinfo/Australia/Adelaide /etc/localtime
# date
Thu May 23 09:36:17 CST 2013
komplementarny
źródło

Odpowiedzi:

22

Wypróbuj w ten sposób:

$ sudo cp /usr/share/zoneinfo/Australia/Adelaide /etc/localtime
zakleszczony
źródło
cp /usr/share/zoneinfo/Australia/Adelaide /etc/localtimenie zmieniaj niczego dla mnie :( czas lokalny jest nadal UTC, dodałem ls -l /etc/localtimerównież to , co mówi.
2
Dlaczego stworzyłeś tam dowiązanie symboliczne? Musisz skopiować jeden plik ... Napraw to, usuwając dowiązanie symboliczne „rm / etc / localtime” i wykonaj cp, jak napisałem „cp / usr / share / zoneinfo / Australia / Adelaide / etc / localtime” ;-)
dowiązanie symboliczne było tam domyślnie .. może coś pod klucz lub coś takiego. mv /etc/localtime /etc/localtime.old cp /usr/share/zoneinfo/Australia/Adelaide /etc/localtimenaprawiono problem :) Dziękuję!
komplementuje
2
Myślę, że kopiowanie jest złe. Co się stanie, jeśli zmieni się plik zoneinfo? Jeśli / etc / localtime jest dowiązaniem symbolicznym (jest w Debianie), nadpisujesz jakiś inny plik zoneinfo.
XTF
32

Myślę, że najlepszym sposobem na osiągnięcie tego jest wykonanie:

sudo dpkg-reconfigure tzdata
Dimitrios
źródło
+1, jest to zdecydowanie właściwy sposób na zrobienie tego w systemach Debian.
jhauris
2
Tak, to dpkg-reconfigure tzdatabyła pierwsza rzecz, której spróbowałem. Nie działało to dla mnie, ponieważ /etc/localtimez jakiegoś powodu było dowiązaniem symbolicznym. Po ustaleniu, że oba sposoby zmieniłyby strefę czasową poprawnie.
komplementuje
tak! wydaje się, że ppl tak uważa, ale używam debiana w kontenerze dokowanym ... co wtedy?
superbohater
-1

Ustaw czas automatycznie za pomocą „Network Time Protocol”. Użyj następującego polecenia, aby zainstalować ntp na debianie.

$ sudo apt-get install ntp

Szczegółowe informacje można znaleźć w dokumentacji https://wiki.debian.org/DateTime

ashish2py
źródło
Lepiej jest podać kroki tutaj i użyć linku jako odniesienia dla dalszych szczegółów. W ten sposób twoja odpowiedź nie traci całej wartości, gdy link traci ważność.
Anthon