timedatectl: sprawdzanie synchronizacji czasu serwera Linux i ustawianie strefy czasowej
timedatectl to polecenie systemd, które pokazuje i zmienia zegar systemowy, strefę czasową oraz stan synchronizacji czasu przez NTP na serwerze Linux. Przy sprawdzaniu synchronizacji na serwerze AlmaLinux 9 z chrony i na serwerze Debian 12 z ntpsec oba serwery miały poprawny zegar, ale wiersz NTP service pokazał na jednym active, a na drugim n/a.
Poniższe wyniki pochodzą z obu serwerów. Na przykładowe wartości zamieniono tylko nazwy hostów, adresy IP i numery wersji pakietów, a poleceń zmieniających czas lub strefę czasową nie uruchamiano na serwerze produkcyjnym.
1️⃣ Użycie timedatectl i sprawdzanie czasu serwera Linux
timedatectl bez opcji daje ten sam wynik co z dodanym status. Czas zegara systemowego i zegara sprzętowego (RTC), strefa czasowa i stan synchronizacji są zebrane na jednym ekranie. Poniżej wynik na serwerze Debian 12.
timedatectl Local time: Wed 2026-10-28 19:49:57 UTC
Universal time: Wed 2026-10-28 19:49:57 UTC
RTC time: Wed 2026-10-28 19:49:57
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: n/a
RTC in local TZ: noStrefa czasowa serwera Debian 12 to Etc/UTC, dlatego Local time i Universal time pokazały ten sam czas. Co oznacza każdy wiersz i wyniki obu serwerów pokazuje tabela poniżej.
| Wiersz wyniku | Co pokazuje | Wyniki obu serwerów i na co zwrócić uwagę |
|---|---|---|
| Local time | Bieżący czas zegara systemowego z uwzględnieniem strefy czasowej | Po zmianie strefy czasowej tylko ten wiersz i wynik date pokazują nową strefę |
| Universal time | Ten sam czas wyrażony w UTC | Nie zmienia się przy zmianie strefy – na serwerze Debian 12 (Etc/UTC) równy Local time |
| RTC time | Czas zegara sprzętowego (RTC) | Pokazany bez strefy czasowej – czas UTC, gdy RTC in local TZ ma wartość no |
| Time zone | Ustawiona strefa czasowa, jej skrót i różnica względem UTC | Przy zmianie użyj nazwy z listy list-timezones |
| System clock synchronized | Czy jądro uznaje zegar za zsynchronizowany | yes na obu serwerach – przy no najpierw sprawdź serwer odniesienia za pomocą chronyc tracking lub ntpq -p |
| NTP service | Czy działa usługa synchronizacji, którą timedatectl włącza i wyłącza | AlmaLinux 9 (chrony) active, Debian 12 (ntpsec) n/a – n/a oznacza usługę nieznaną timedatectl, więc sprawdź ją przez systemctl |
| RTC in local TZ | Czy zegar sprzętowy pracuje w czasie lokalnym (no = UTC) | no na obu serwerach – polecenie zmieniające yes na UTC to set-local-rtc 0 |
Linux ma dwa zegary. Zegar systemowy utrzymuje jądro po uruchomieniu systemu, a zegar sprzętowy to zegar na płycie głównej, który odmierza czas nawet przy wyłączonym serwerze.
Zegar sprzętowy odczytuje się bezpośrednio poleceniem hwclock. hwclock wypisuje czas przeliczony na bieżącą strefę czasową. Na serwerze AlmaLinux odczyt z TZ=UTC przed poleceniem zwrócił czas UTC zakończony na +00:00.
TZ=UTC hwclock --show2026-10-28 19:53:33.006788+00:00Na serwerze Debian 12, po połączeniu ze zwykłego konta, to samo polecenie zakończyło się bez dostępu do zegara sprzętowego.
/usr/sbin/hwclock --showhwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.Wiersz RTC in local TZ to to samo ustawienie co trzeci wiersz pliku /etc/adjtime. Na serwerze AlmaLinux trzeci wiersz miał wartość UTC, co oznacza, że zegar sprzętowy pracuje w UTC.
cat /etc/adjtime0.0 0 0.0
0
UTCDo odczytu wartości w skrypcie używaj show zamiast status. Na serwerze Debian 12 te same dane pojawiają się w postaci nazwa=wartość, po jednej w wierszu.
timedatectl showTimezone=Etc/UTC
LocalRTC=no
CanNTP=no
NTP=no
NTPSynchronized=yes
TimeUSec=Wed 2026-10-28 19:49:57 UTC
RTCTimeUSec=Wed 2026-10-28 19:49:57 UTCWybierz właściwości przez -p i dodaj --value, aby zostały same wartości bez nazw. Tej postaci używa się, aby wyciągnąć tylko nazwę strefy czasowej.
timedatectl show -p Timezone --valueEtc/UTC🔲 Symulator polecenia timedatectl
W symulatorze poniżej możesz sam wpisać polecenia do sprawdzania czasu, listowania stref czasowych, zmiany strefy i sprawdzania synchronizacji przez chronyc.
2️⃣ Stan synchronizacji czasu serwera Linux
Wiersz System clock synchronized pokazuje, czy jądro uznaje zegar za zsynchronizowany, a wiersz NTP service, czy działa usługa synchronizacji, którą timedatectl może włączać i wyłączać. W show te same wartości pojawiają się jako NTPSynchronized i NTP, a CanNTP pokazuje, czy istnieje usługa synchronizacji, którą da się włączać i wyłączać.
Na serwerze AlmaLinux 9 z chrony wszystkie trzy wartości były yes.
timedatectl show -p CanNTP -p NTP -p NTPSynchronizedCanNTP=yes
NTP=yes
NTPSynchronized=yesNa serwerze Debian 12, który ustawia czas przez ntpsec, tylko NTPSynchronized miało wartość yes, a CanNTP i NTP miały no. Dlatego na ekranie status tego serwera wiersz NTP service pokazał n/a.
timedatectl show -p CanNTP -p NTP -p NTPSynchronizedCanNTP=no
NTP=no
NTPSynchronized=yesSama usługa ntpsec działała.
systemctl is-active ntpsecactivetimedatectl zna tylko usługi synchronizacji wpisane w pliki list w folderze ntp-units.d, a pakiety dystrybucji umieszczają te pliki w /usr/lib/systemd/ntp-units.d/ (według oficjalnej dokumentacji). Na serwerze AlmaLinux 9 był plik listy zainstalowany przez pakiet chrony, zawierający jeden wiersz: chronyd.service.
cat /usr/lib/systemd/ntp-units.d/50-chronyd.listchronyd.servicerpm -qf /usr/lib/systemd/ntp-units.d/50-chronyd.listchrony-4.8-10.el9.x86_64Na serwerze Debian 12 tego folderu nie było. Ponieważ ntpsec nie ma na liście, timedatectl wiedział, że zegar jest zsynchronizowany, ale nie mógł tej usługi włączyć ani wyłączyć.
ls /usr/lib/systemd/ntp-units.d/ls: cannot access '/usr/lib/systemd/ntp-units.d/': No such file or directory3️⃣ Sprawdzanie synchronizacji czasu za pomocą chronyc
Na serwerze z chrony serwer czasu, według którego ustawiany jest zegar, sprawdza się poleceniem chronyc. sources wypisuje serwery czasu odpytywane przez chronyd i ich stan, po jednym w wierszu.
chronyc sourcesMS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- 192.0.2.10 2 10 377 943 +272us[ +275us] +/- 55ms
^- ntp1.example.com 2 10 377 80 -28us[ -32us] +/- 3655us
^- 198.51.100.33 3 10 257 384 -151us[ -156us] +/- 97ms
^- 198.51.100.82 3 10 177 532 +157us[ +149us] +/- 45ms
^* 192.0.2.123 3 4 377 2 -21us[ -23us] +/- 312usPoczątkowy znak ^ oznacza serwer czasu, * jako drugi znak oznacza serwer odniesienia, według którego zegar jest teraz ustawiany, a - kandydata niewliczanego do obliczeń. Poll 4 przy serwerze odniesienia oznacza odpytywanie co 16 sekund (2 do potęgi 4), a Reach 377 oznacza, że odebrano wszystkie osiem ostatnich odpowiedzi.
tracking pokazuje, o ile zegar systemowy odbiega od czasu serwera odniesienia.
chronyc trackingReference ID : C000027B (192.0.2.123)
Stratum : 4
Ref time (UTC) : Wed Oct 28 19:50:21 2026
System time : 0.000002422 seconds slow of NTP time
Last offset : -0.000002098 seconds
RMS offset : 0.000000981 seconds
Frequency : 6.348 ppm slow
Residual freq : -0.001 ppm
Skew : 0.017 ppm
Root delay : 0.000300815 seconds
Root dispersion : 0.000150780 seconds
Update interval : 16.3 seconds
Leap status : NormalWiersz System time pokazuje, że zegar systemowy spóźniał się o 0.000002422 sekundy względem czasu NTP, a Leap status miał wartość Normal. Update interval równy 16.3 sekundy to odstęp między dwiema ostatnimi aktualizacjami zegara.
To, które serwery są odpytywane, ustalają wiersze pool i server w /etc/chrony.conf. Po usunięciu komentarzy i pustych wierszy zostają tylko poniższe wiersze ustawień.
grep -v "^#" /etc/chrony.conf | grep -v "^$"pool 2.almalinux.pool.ntp.org iburst
sourcedir /run/chrony-dhcp
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
ntsdumpdir /var/lib/chrony
leapsectz right/UTC
logdir /var/log/chrony
server 192.0.2.123 prefer iburst minpoll 4 maxpoll 4Wiersz pool odpytuje pulę NTP AlmaLinux, a prefer w ostatnim wierszu server to opcja, dzięki której chronyd wybiera ten serwer przed innymi. makestep 1.0 3 to ustawienie, które przy trzech pierwszych aktualizacjach po starcie chronyd koryguje jednym skokiem zegar przesunięty o ponad 1 sekundę, a potem dostraja go stopniowo, nieco go przyspieszając lub spowalniając. rtcsync sprawia, że jądro co 11 minut zapisuje czas systemowy do zegara sprzętowego (według oficjalnej dokumentacji).
Na serwerze Debian 12 z ntpsec te same dane sprawdzono poleceniem ntpq -p. Początkowy znak * to serwer odniesienia, a wszystkie trzy serwery były odpytywane co 1024 sekundy.
ntpq -p remote refid st t when poll reach delay offset jitter
===============================================================================
+203.0.113.43 198.51.100.28 2 u 835 1024 377 184.6893 -0.1018 1.4879
+203.0.113.44 198.51.100.27 2 u 547 1024 377 183.0827 -2.4227 4.0957
*ntp2.example.co 198.51.100.40 2 u 440 1024 377 177.4670 -0.5814 1.70704️⃣ Zmiana strefy czasowej za pomocą timedatectl
Nazwy stref czasowych sprawdza się poleceniem list-timezones. Większość ma postać Kontynent/Miasto, po jednej w wierszu, a na obu serwerach było ich 598.
timedatectl list-timezones | head -5Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmaratimedatectl list-timezones | wc -l598Lista jest długa, więc przy szukaniu nazwy filtruj ją przez grep.
timedatectl list-timezones | grep -i new_yorkAmerica/New_YorkStrefę czasową zmienia się, podając po set-timezone nazwę z listy. To polecenie podmienia dowiązanie /etc/localtime na nowy plik strefy czasowej, więc ze zwykłego konta uruchamia się je z sudo.
sudo timedatectl set-timezone America/New_YorkPoleceniem ls -l sprawdzisz, czy /etc/localtime jest dowiązaniem do pliku strefy czasowej.
ls -l /etc/localtimelrwxrwxrwx 1 root root 27 Sep 24 12:52 /etc/localtime -> /usr/share/zoneinfo/Etc/UTCNazwa spoza listy została od razu odrzucona, zanim strefa czasowa się zmieniła.
timedatectl set-timezone Mars/OlympusFailed to set time zone: Invalid or not installed time zone 'Mars/Olympus'Zmiana strefy czasowej nie zmienia czasu zegara systemowego; w nowej strefie pojawiają się tylko Local time i wynik polecenia date. Na serwerze z zegarem sprzętowym w UTC zegar sprzętowy też się nie zmienia (według oficjalnej dokumentacji).
5️⃣ Włączanie NTP i ręczne ustawianie czasu za pomocą timedatectl
set-ntp true uruchamia pierwszą usługę z listy usług synchronizacji i włącza jej start przy rozruchu. false zatrzymuje usługi z listy i wyłącza ich start przy rozruchu (według oficjalnej dokumentacji).
sudo timedatectl set-ntp trueNa serwerze Debian 12 bez pliku listy polecenie nawet z false, czyli bieżącą wartością, zakończyło się komunikatem NTP not supported. Usługę spoza listy, taką jak ntpsec, uruchamia się i zatrzymuje bezpośrednio przez systemctl.
timedatectl set-ntp falseFailed to set ntp: NTP not supportedAby ustawić czas ręcznie, podaj datę i godzinę po set-time. To polecenie ustawia zegar sprzętowy razem z zegarem systemowym.
sudo timedatectl set-time '2026-10-28 20:00:00'Na serwerze Debian 12 podanie wartości w złym formacie zakończyło się błędem bez zmiany czasu.
timedatectl set-time badFailed to parse time specification 'bad': Invalid argumentAby na serwerze z chrony jednym ruchem skorygować mocno przesunięty zegar, używa się chronyc makestep.
sudo chronyc makestepmakestep porzuca resztę różnicy korygowanej stopniowo i od razu przestawia zegar systemowy o tę wartość. Oficjalna dokumentacja ostrzega, że nagła zmiana czasu może wpłynąć na część oprogramowania, więc używaj go tylko wtedy, gdy zegar odbiega za bardzo, by korygować go powoli.
🔢 FAQ & polecane treści
Ustawienia · locale
[Linux] Polecenie localectl
Polecenie localectl pokazuje i zmienia język systemu (locale) oraz układ klawiatury.
Informacje o systemie
Polecenie uptime w Linuksie (czas pracy serwera & średnie obciążenie z 1, 5 i 15 minut)
Polecenie uptime pokazuje, jak długo działa serwer, oraz średnie obciążenie z 1, 5 i 15 minut.
Zarządzanie usługami
Apache: uruchamianie, zatrzymywanie i restart – polecenia i różnica z graceful
Polecenia do uruchamiania, zatrzymywania i restartowania Apache oraz sprawdzania stanu usługi w systemach z rodziny Red Hat i w Ubuntu.
ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.