Czy istnieje sposób sprawdzenia, w której strefie czasowej aktualnie jestem w systemie Linux?
linux
ubuntu-10.04
Peter Mortensen
źródło
źródło
date
powiem ci.echo $TZ
nic mi nie zwraca.Jeśli masz na myśli z konsoli, po prostu wpisz:
źródło
+07
mi. Aby uzyskać dostępRegion/City
do systemu Linux opartego na Debian / Arch, zobacz tę odpowiedź .Jeśli chcesz numeryczną strefę czasową:
date +'%:z %Z'
Przykładowe dane wyjściowe:
źródło
:z EST
date
. Wersja BusyBox drukuje coś nie sensownego, w moim przypadku „%: z CEST”.linux
ubuntu-10.04
Zamiast tego chciałem znaleźć strefę czasową w formie „US / Eastern” lub „Europe / London”. Możesz to znaleźć w:
ZONE="US/Eastern"
w / etc / sysconfig / clocklub możesz spróbować dopasować / etc / localtime do jednego z plików w katalogu / usr / share / zoneinfo; denerwująco nie wydaje się to dowiązaniem symbolicznym, ale możesz np
znaleźć pasujące pliki - prawdopodobnie są na to lepsze sposoby, ale to działa. Będzie wiele dopasowań.
źródło
find /usr/share/zoneinfo/ -type f| xargs md5sum | grep $(md5sum /etc/localtime | cut -d' ' -f1)
W przypadku Ubuntu spróbuj tego:
Przykładowe dane wyjściowe:
W przypadku innych informacji o dystrybucji: https://unix.stackexchange.com/questions/110522/timezone-setting-in-linux
źródło
timedatectl set-timezone
się nie aktualizuje/etc/timezone
. Zobacz tę odpowiedź, aby znaleźć rozwiązanie oparte na/etc/localtime
.Czasami możesz szukać kanonicznej strefy czasowej, a nie krótkiej formy utworzonej
date %Z
npUS/Eastern
. Przez . W systemach ztimedatectl
np. Fedorątimedatectl
wyświetla wiele użytecznych informacji, w tym bieżącą strefę:Niestety
timedatectl
przyjmujeset-timezone
jako polecenie, ale nie ma odpowiadającegoget-timezone
. Analizuj w następujący sposób:źródło
Więc jestem na czas górski. Chociaż powyższe porady dotyczące używania zmiennej środowiskowej lub po prostu danych wyjściowych polecenia date czasami działają lepiej, w zależności od tego, jak chcesz tego użyć.
źródło
W strefie czasowej możesz użyć geolokalizacji:
Lub:
http://wiki.archlinux.org/index.php/time#Time_zone
źródło
/sbin/hwclock --systohc [--utc]
aby ustawić zegar sprzętowy.Jądro Linux zawsze przechowuje i oblicza czas jako liczbę sekund od północy 1 stycznia 1970 roku UTC, niezależnie od tego, czy zegar sprzętowy jest zapisany jako UTC, czy nie. Konwersje na czas lokalny są wykonywane w czasie wykonywania. Jedną fajną rzeczą jest to, że jeśli ktoś używa twojego komputera z innej strefy czasowej, może ustawić zmienną środowiskową TZ, a wszystkie daty i godziny będą wyświetlane poprawnie dla swojej strefy czasowej.
Jeśli liczba sekund od 1 stycznia 1970 r. UTC jest przechowywana jako 32-bitowa liczba całkowita ze znakiem (tak jak w systemie Linux / Intel), Twój zegar przestanie działać w roku 2038. Linux nie ma nieodłącznego problemu z Y2K , ale ma problem z rokiem 2038. Mamy nadzieję, że do tego czasu wszyscy będziemy używać Linuksa na systemach 64-bitowych. 64-bitowe liczby całkowite utrzymają nasze zegary całkiem dobrze do około 292271 milionów lat.
źródło
Kilka rozwiązań:
dał mi (odpowiednio):
Mój komputer jest na UTC.
źródło
Użycie TZ lub daty NIE JEST NIEZAWODNE, ponieważ informuje o strefie czasowej UŻYTKOWNIKA, a nie o domyślnej systemowej strefie czasowej.
Domyślna systemowa strefa czasowa jest przechowywana w / etc / timezone (która często jest symbolicznym łączem do pliku danych strefy czasowej specyficznego dla strefy czasowej). Jeśli nie masz / etc / timezone, spójrz na / etc / localtime. Ogólnie jest to strefa czasowa „serwera”. / etc / localtime jest często dowiązaniem symbolicznym do pliku strefy czasowej w / usr / share / zoneinfo. Ścieżka do odpowiedniego pliku strefy czasowej często zawiera również informacje geograficzne.
Nowszy linux ma „timedatectl”, który daje mnóstwo informacji, gdy polecenie jest uruchomione.
(jako węzeł boczny, jeśli masz starożytny system, który wciąż korzysta ze starych zakodowanych stref czasowych, prawdopodobnie możesz skopiować na niego nowoczesny plik strefy czasowej i będzie on działał. Musiałem to robić wiele razy, aby rozwiązać problem zmiany stref czasowych na starszym sprzęcie).
źródło
Czasami
timedatectl set-timezone
się nie aktualizuje/etc/timezone
, dlatego najlepiej jest pobrać strefę nazw z pliku, na który/etc/timezone
wskazuje dowiązanie symboliczne :Odniesienia: w tej odpowiedzi .
źródło
Możesz jednocześnie wyświetlić datę i strefę czasową:
źródło