CodeGym /Kursy /Docker SELF /Zarządzanie strefami czasowymi i czasem: komendy timedate...

Zarządzanie strefami czasowymi i czasem: komendy timedatectl

Docker SELF
Poziom 3 , Lekcja 2
Dostępny

1. Praca z czasem w Linux

Dlaczego ważne jest poprawne ustawienie czasu?

Wyobraź sobie, że próbujesz odnaleźć błąd w logach systemu, ale czas tam zapisany nie zgadza się z rzeczywistością. Albo, co gorsze, twój serwer w międzynarodowej firmie pokazuje różny czas dla różnych użytkowników. Poprawne ustawienie czasu to nie tylko wygoda: jest to krytycznie ważne dla działania systemów, synchronizacji plików, utrzymania bezpieczeństwa (certyfikaty SSL zależą od czasu) oraz koordynacji zadań.

W Linux czas może być przedstawiony w dwóch formach:

  1. Czas systemowy (System Time) — to czas, którego system operacyjny używa do swoich zadań.
  2. Czas sprzętowy (Hardware Time) — zapisany na poziomie sprzętu (BIOS/UEFI).

Będziemy pracować z czasem systemowym za pomocą narzędzia timedatectl.


2. Podstawy komendy timedatectl

timedatectl — to narzędzie wiersza poleceń, które oferuje wygodny interfejs do zarządzania czasem. Umożliwia:

  • Sprawdzanie bieżących ustawień czasu i strefy czasowej;
  • Ustawianie systemowego i sprzętowego czasu;
  • Konfigurowanie stref czasowych;
  • Włączanie i wyłączanie synchronizacji czasu za pomocą NTP (Network Time Protocol).

Sprawdzanie aktualnego czasu

Zacznijmy od najprostszej rzeczy. Aby sprawdzić aktualny czas i ustawienia, wykonaj poniższą komendę:

timedatectl

Przykładowy wynik:

Local time: Tue 2023-10-31 12:34:56 MSK
Universal time: Tue 2023-10-31 09:34:56 UTC
RTC time: Tue 2023-10-31 09:34:56
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Wyjaśnienie pól:

  • Local time: Czas lokalny (systemowy).
  • Universal time: Czas w formacie UTC (uniwersalny czas koordynowany).
  • RTC time: Czas sprzętowy (na poziomie BIOS/UEFI).
  • Time zone: Aktualna strefa czasowa.
  • System clock synchronized: Czy zegar jest synchronizowany przez NTP.
  • NTP service: Czy usługa synchronizacji czasu jest aktywna.
  • RTC in local TZ: Czy czas sprzętowy odpowiada lokalnej strefie czasowej.

Konfiguracja i zmiana strefy czasowej

Czasami, po przeprowadzce lub zmianach w projekcie, może być konieczne zmienienie strefy czasowej. Na przykład, twój serwer był skonfigurowany na Nowy Jork, ale teraz obsługuje użytkowników w Moskwie. Strefy czasowe można znaleźć w katalogu /usr/share/zoneinfo.

Aby zobaczyć dostępne strefy czasowe, wykonaj:

timedatectl list-timezones

Wynikiem będzie ogromna lista w rodzaju:

Africa/Abidjan
America/New_York
Asia/Tokyo
Europe/Moscow

Nową strefę czasową można ustawić za pomocą komendy:

sudo timedatectl set-timezone Europe/Moscow

Sprawdź, czy strefa czasowa została zmieniona:

timedatectl

Praktyczne zadanie

  1. Znajdź aktualną strefę czasową twojego serwera.
  2. Przełącz strefę czasową na UTC.
  3. Przywróć strefę czasową do lokalnej.

3. Ręczna konfiguracja czasu

Choć nowoczesne serwery zazwyczaj synchronizują czas przez NTP, czasem trzeba ustawić go ręcznie. To przydaje się, gdy serwer znajduje się w izolowanej sieci bez dostępu do internetu.

Najpierw możesz sprawdzić aktualny czas systemowy:

date

Nowy czas można ustawić za pomocą polecenia:

sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"

Na przykład, aby ustawić czas na 1 listopada 2023 roku, godzina 12:00:

sudo timedatectl set-time "2023-11-01 12:00:00"

Teraz sprawdź wynik ponownie:

timedatectl

Konfiguracja czasu sprzętowego

Czas sprzętowy (znany również jako RTC — Real-Time Clock) jest zarządzany na poziomie BIOS/UEFI. Jeśli czas sprzętowy nie jest zsynchronizowany z systemowym, może to powodować problemy podczas restartu. Aby zsynchronizować czas, wykonaj:

sudo hwclock --systohc

To polecenie ustawi czas sprzętowy zgodnie z czasem systemowym.

Jeżeli musisz zrobić odwrotnie (zsynchronizować czas systemowy z czasem sprzętowym), użyj:

sudo hwclock --hctosys

4. Synchronizacja czasu przez NTP

Synchronizacja czasu przez NTP to sposób automatycznego utrzymywania aktualnego czasu za pomocą zdalnych serwerów. W większości nowoczesnych dystrybucji Linux NTP jest włączony domyślnie.

Sprawdzanie ustawień NTP

Wykonaj:

timedatectl status

Jeśli NTP jest wyłączone (linia NTP service pokaże inactive), włącz go:

sudo timedatectl set-ntp true

Żeby wyłączyć NTP, wykonaj:

sudo timedatectl set-ntp false

Jeśli NTP nie działa, upewnij się, że odpowiednie usługi są aktywne. Na przykład w systemach z systemd-timesyncd upewnij się, że usługa jest aktywna:

sudo systemctl status systemd-timesyncd

5. Ćwiczenie praktyczne

Zadanie

  1. Ustaw strefę czasową swojego systemu na UTC.
  2. Ręcznie ustaw czas systemowy na 12:00:00, 1 listopada 2023 roku.
  3. Włącz synchronizację czasu przez NTP.

Sprawdzenie

Po wykonaniu zadania upewnij się, że:

  • Twój czas systemowy odpowiada ustawionym parametrom.
  • Strefa czasowa została zmieniona na UTC.
  • Usługa NTP jest aktywna.

6. Częste błędy i pułapki

  1. "RTC in local TZ: no" nie odpowiada lokalnej strefie czasowej. Wiele systemów woli używać UTC dla czasu sprzętowego, aby uniknąć zamieszania podczas pracy w różnych strefach czasowych. To nie błąd, a raczej preferencja.

  2. Błąd dostępu przy zmianie czasu. Polecenie timedatectl wymaga uprawnień superużytkownika. Upewnij się, że używasz sudo.

  3. Synchronizacja NTP nie aktywuje się. Sprawdź, czy usługa NTP działa na twoim serwerze. Na przykład, dla systemd-timesyncd wykonaj:

    sudo systemctl start systemd-timesyncd
    

Po co to na praktyce?

  1. Administrowanie serwerami. Ustawianie czasu i stref czasowych jest ważne dla poprawnego działania logów, synchronizacji danych i planowania zadań.
  2. Praca z międzynarodowymi projektami. Korzystanie z UTC jako standardu pomaga uniknąć zamieszania podczas pracy z klientami z różnych stref czasowych.
  3. Rozmowy kwalifikacyjne i certyfikacja. Pytania o timedatectl i zarządzanie czasem pojawiają się na egzaminach i rozmowach kwalifikacyjnych na stanowiska administratora systemów.

Teraz jesteś gotowy zarządzać czasem w Linux tak, jak zarządzasz swoimi deadline'ami: pewnie, dokładnie i bez niepotrzebnych niespodzianek.

1
Zadanie
Docker SELF, poziom 3, lekcja 2
Niedostępne
Sprawdzanie bieżącego czasu i ustawień
Sprawdzanie bieżącego czasu i ustawień
1
Zadanie
Docker SELF, poziom 3, lekcja 2
Niedostępne
Przegląd dostępnych stref czasowych
Przegląd dostępnych stref czasowych
1
Zadanie
Docker SELF, poziom 3, lekcja 2
Niedostępne
Zmiana strefy czasowej
Zmiana strefy czasowej
1
Zadanie
Docker SELF, poziom 3, lekcja 2
Niedostępne
Ręczna konfiguracja systemowego czasu
Ręczna konfiguracja systemowego czasu
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION