Jak korzystać z polecenia timedatectl w systemie Linux?

Opublikowany: 2022-06-16
Kilka zegarów ściennych tłoczy się razem, wszystkie pokazują różne godziny.
POR666/Shutterstock.com

Polecenie timedatectl w systemie Linux pozwala ustawić godzinę, datę i strefę czasową dla zegara systemowego i zegara czasu rzeczywistego. Poświęć chwilę, a pokażemy Ci, jak to wszystko działa.

to wszystko jest względne

Traktowanie czasu przez komputer jest jedną z tych rzeczy, których można oczekiwać, że będą całkiem proste. Przynajmniej dopóki nie zaczniesz się temu przyglądać.

Co to jest epoka uniksowa i jak działa czas uniksowy?
POWIĄZANE Co to jest epoka uniksowa i jak działa czas uniksowy?

Zegar systemu Linux zlicza liczbę sekund od epoki Uniksa. Było to o godzinie 00:00:00 1 stycznia 1970 roku UTC. UTC oznacza uniwersalny czas koordynowany, ale zwykle mówi się o nim jako o uniwersalnym czasie koordynowanym lub po prostu o czasie uniwersalnym. To jest standard czasu, według którego świat zarządza i reguluje czas. Różne strefy czasowe stosują przesunięcie do czasu UTC, aby uzyskać swój czas lokalny. Niektóre strefy czasowe wyprzedzają UTC, a inne są za nim.

Zegar systemowy w komputerach z systemem Linux jest oparty na oprogramowaniu. Oczywiście nie może działać, gdy komputer jest wyłączony. Inny zegar, sprzętowy zegar czasu rzeczywistego z zasilaniem bateryjnym, może działać, gdy komputer jest wyłączony. Jego celem jest wskazanie zegarowi systemowemu, która jest godzina przy każdym uruchomieniu Linuksa. Chyba że możliwy jest dostęp do serwera protokołu czasu sieciowego (NTP).

Serwery NTP to serwery, które dostarczają dokładnych informacji o czasie komputerom, które o to proszą. Jeśli po uruchomieniu komputera lub laptopa nie ma dostępu do Internetu — lub nie został on skonfigurowany do korzystania z serwerów NTP — zegar czasu rzeczywistego jest używany do przygotowania zegara systemowego zamiast serwera NTP.

Reklama

Zegar systemowy jest zawsze w UTC. Każda aplikacja, która musi pobierać czas lokalny, musi:

  • Uzyskaj dostęp do zegara systemowego i uzyskaj UTC
  • Dowiedz się, w jakiej strefie czasowej się znajduje, i zastosuj prawidłowe przesunięcie
  • Weź pod uwagę, czy obowiązuje czas letni

Konwersja z czasu UTC na czas lokalny jest wykonywana przez aplikację, a nie zegar systemowy. Lub, dokładniej, konwersja jest wykonywana przez biblioteki czasu i daty, z którymi aplikacja jest połączona. Dlatego ważne jest, aby komputer wiedział, jaka jest strefa czasowa, jaki jest czas UTC, ile sekund minęło od epoki Uniksa i czy obowiązuje czas letni.

Dlaczego systemd Linuksa nadal dzieli po tych wszystkich latach
POWIĄZANE Dlaczego systemd Linuksa nadal dzieli po tych wszystkich latach

W dystrybucjach systemu Linux opartych na systemied używamy timedatectl , aby zobaczyć lub zmienić te ustawienia i wartości.

Pierwsze kroki z timedatectl

Aby zobaczyć bieżące dane i czas oraz inne wartości, użyj timedatectl z operatorem status .

 stan timedatectl 

Dane wyjściowe polecenia timedatectl przy użyciu operatora statusu

Właściwie możesz usunąć status i nadal będziesz otrzymywać te same dane wyjściowe.

 timedatectl 

Dane wyjściowe polecenia timedatectl bez operatora

Oba zestawy danych wyjściowych pokazują:

  • Czas lokalny : godzina, o której myśli, że jest, zgodnie ze strefą czasową.
  • Czas uniwersalny : czas UTC.
  • Czas RTC : Czas używany przez zegar czasu rzeczywistego. Zwykle jest to czas UTC.
  • Strefa czasowa : Informacje dotyczące skonfigurowanej strefy czasowej.
  • Zsynchronizowany zegar systemowy : czy zegar systemowy jest zsynchronizowany z serwerem NTP.
  • Usługa NTP : czy usługa NTP komputera jest aktywna.
  • RTC in local TZ : Czy zegar czasu rzeczywistego używa czasu lokalnego zamiast UTC.

Możesz zobaczyć, ile stref czasowych obsługuje polecenie timedatectl , wpisując:

 timedatectl list-strefy czasowe | wc-l 

Liczenie stref czasowych timedatectl

Reklama

To o wiele więcej niż stref czasowych na świecie. Jeśli przekierujemy dane wyjściowe do grep i odfiltrujemy wpisy dla „Ameryki” i prześlemy je do less , możemy przewinąć listę łatwiejszą do zarządzania.

 timedatectl list-strefy czasowe | grep "Ameryka/" | mniej 

Filtrowanie amerykańskich stref czasowych za pomocą grep

Przeglądając tę ​​listę, zobaczysz, że „Ameryka” ma najszersze możliwe znaczenie. Drugą rzeczą, jaką zauważysz, jest to, że większość wpisów nie jest rzeczywistymi strefami czasowymi.

Lista „amerykańskich” stref czasowych w mniej

Ustawianie strefy czasowej

Jeśli przejrzysz niefiltrowaną listę stref czasowych obsługiwanych przez timedatectl , zobaczysz zarówno miejsca, jak i strefy czasowe. Aby ustawić strefę czasową, możesz określić ją według nazwy, np. EST lub GMT, lub możesz wybrać lokalizację w tej samej strefie czasowej, co Ty, np. Londyn lub Nowy Jork.

Resetowanie strefy czasowej nie jest czymś, co robisz często, ale być może przeprowadziłeś się do domu lub przez jakiś czas pracujesz i chcesz zlokalizować swój laptop. Jeśli musisz zresetować strefę czasową, wybierz lokalizację w strefie czasowej, której chcesz używać.

Ustawimy ten komputer na czas górski, który jest tą samą strefą czasową co Edmonton. Zobaczymy, jak zmieniły się ustawienia.

 timedatectl set-timezone "Ameryka/Edmonton"
 timedatectl 

Nowa strefa czasowa i ustawienia czasu

Nasza strefa czasowa została zmieniona, nasz czas lokalny uległ zmianie, a nasze przesunięcie względem UTC wzrosło.

POWIĄZANE: Jak korzystać z potoków w systemie Linux

Ręczne ustawianie godziny i daty

Chociaż ręczne ustawianie godziny i daty jest możliwe, zazwyczaj nie jest to konieczne. Korzystanie z synchronizacji czasu i protokołu NTP to preferowany sposób na zachowanie dokładności czasu i daty na komputerze. Jeśli spróbujesz zmienić datę lub godzinę na swoich komputerach, prawdopodobnie pojawi się błąd informujący, że używana jest synchronizacja czasu.

 timedatectl ustawiony czas 10:30:00 

Komunikat o błędzie, ponieważ obowiązuje synchronizacja czasu

Reklama

Użyj tego polecenia, aby wyłączyć usługę synchronizacji czasu:

 sudo systemctl zatrzymaj systemd-timesyncd.service

Możesz ustawić godzinę, datę lub oba te elementy za pomocą operatora set-time timedatectl . daty są w kolejności rok-miesiąc-dzień RRRR-MM-DD, a czas jest w kolejności godziny-minuty-sekundy GG:MM:SS. Ustawimy czas i datę za pomocą tego polecenia:

 timedatectl set-time "2022-01-30 10:30:00"

Następnie sprawdzimy, czy zmiany zostały wprowadzone, używając timedatectl .

 timedatectl 

Ręczne ustawianie godziny i daty

Zmieniła się data i godzina. Należy również pamiętać, że komputer używa fałszywego czasu UTC. Zostaliśmy również poinformowani, że zegar systemowy nie jest synchronizowany, a usługa NTP jest nieaktywna.

Jeśli masz dostęp do Internetu, jak tylko przywrócisz usługę synchronizacji czasu, czas zostanie pobrany i wszystkie szczegóły zostaną poprawnie zresetowane.

 sudo systemctl start systemd-timesyncd.service
 timedatectl 

Ponowne uruchomienie usługi NTP i przywrócenie prawidłowych wartości czasu

RTC: UTC czy LTZ?

Możliwe jest ustawienie zegara czasu rzeczywistego na czas w lokalnej strefie czasowej zamiast na UTC — jest to możliwe, ale niewskazane. Jeśli wprowadzisz zmianę, zobaczysz ostrzeżenie o tragicznych skutkach, jakie może to mieć w przyszłości na twój system.

Reklama

Powodem, dla którego pokazujesz tę metodę, jest to, że możesz napotkać komputer, na którym mają dziwne problemy z ustawieniami czasu. Oto jak ustawić zegar czasu rzeczywistego z powrotem na UTC.

Najpierw musimy ustawić ją na lokalną strefę czasową.

 timedatectl set-local-rtc 1

Następnie zapytamy timedatectl o jego status.

 timedatectl 

Ustawienie zegara czasu rzeczywistego na lokalną strefę czasową i towarzyszące temu ostrzeżenie

Myślę, że jasno wyrazili swoje uczucia.

Aby przywrócić zegar czasu rzeczywistego do UTC, użyj tego polecenia:

 timedatectl set-local-rtc 0

Ustaw i zapomnij

O ile nie popełniłeś błędu podczas instalacji swojej dystrybucji Linuksa lub nie przenosisz się, zwykle nie ma powodu, aby modyfikować ustawienia systemu i zegarów czasu rzeczywistego.

Reklama

Ustaw zegar systemowy na strefę czasową, zegar czasu rzeczywistego na UTC i upewnij się, że system odpytuje serwer protokołu czasu sieciowego. To stan domyślny po większości instalacji.

Jeśli wszystkie są ustawione, systemy czasu Twojego komputera same się o siebie zatroszczą.

POWIĄZANE: Jak zsynchronizować czas serwera Linux z serwerami czasu sieciowego (NTP)