timedatectl: проверка синхронизации времени на сервере Linux и настройка часового пояса

Тестовая средаСемейство RHELAlmaLinux 9.8systemd 252 · chrony 4.8Учётная запись rootDebian 12 обычная учётная записьПроверено 2026-10-29
Команды системной информации · настроекtimedatectlРасположение/usr/bin/timedatectl

timedatectl — команда systemd, которая показывает и меняет системные часы, часовой пояс и состояние синхронизации времени по NTP на сервере Linux. При проверке синхронизации на сервере AlmaLinux 9 с chrony и сервере Debian 12 с ntpsec часы на обоих серверах шли верно, но строка NTP service на одном показала active, а на другом n/a.

Ниже приведён вывод команд, выполненных на двух серверах. На примерные значения заменены только имена хостов, IP-адреса и номера версий пакетов, а команды, меняющие время или часовой пояс, на рабочем сервере не выполнялись.

1️⃣ Использование timedatectl и проверка времени на сервере Linux

Запуск timedatectl без параметров даёт тот же результат, что и с status. Время системных и аппаратных часов (RTC), часовой пояс и состояние синхронизации собраны на одном экране. Ниже результат на сервере 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: no

Часовой пояс сервера Debian 12 — Etc/UTC, поэтому Local time и Universal time показали одно и то же время. Что показывает каждая строка и результаты двух серверов — в таблице ниже.

Строка выводаЧто показываетРезультаты двух серверов и что проверить
Local timeТекущее время системных часов с учётом часового поясаПри смене часового пояса в новый пояс переходят только эта строка и вывод date
Universal timeТо же время в UTCНе меняется при смене часового пояса — на сервере Debian 12 (Etc/UTC) совпадает с Local time
RTC timeВремя аппаратных часов (RTC)Выводится без часового пояса — время UTC, если RTC in local TZ равно no
Time zoneЗаданный часовой пояс, его сокращение и разница с UTCПри смене используйте имя из списка list-timezones
System clock synchronizedСчитает ли ядро часы синхронизированнымиНа обоих серверах yes — при no сначала проверьте опорный сервер через chronyc tracking или ntpq -p
NTP serviceЗапущена ли служба синхронизации, которую включает и выключает timedatectlAlmaLinux 9 (chrony) — active, Debian 12 (ntpsec) — n/a; n/a значит, что timedatectl не знает эту службу, поэтому проверяйте её через systemctl
RTC in local TZИдут ли аппаратные часы по местному времени (no = UTC)На обоих серверах no — команда для перевода yes в UTC: set-local-rtc 0

В Linux двое часов. Системные часы ведёт ядро после загрузки, а аппаратные часы — это часы на материнской плате, которые идут даже при выключенном сервере.

Аппаратные часы читаются напрямую командой hwclock. hwclock выводит время, пересчитанное в текущий часовой пояс. На сервере AlmaLinux чтение с TZ=UTC перед командой дало время UTC с +00:00 в конце.

TZ=UTC hwclock --show
2026-10-28 19:53:33.006788+00:00

На сервере Debian 12, где вход был под обычной учётной записью, та же команда завершилась, не получив доступа к аппаратным часам.

/usr/sbin/hwclock --show
hwclock: 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.

Строка RTC in local TZ — это та же настройка, что и третья строка файла /etc/adjtime. На сервере AlmaLinux третья строка была UTC, то есть аппаратные часы идут по UTC.

cat /etc/adjtime
0.0 0 0.0
0
UTC

Чтобы читать значения в скрипте, используйте show вместо status. На сервере Debian 12 та же информация выводится в виде имя=значение, по одному на строку.

timedatectl show
Timezone=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 UTC

Выберите свойства через -p и добавьте --value, чтобы остались только значения без имён. Так извлекают одно лишь имя часового пояса.

timedatectl show -p Timezone --value
Etc/UTC

🔲 Симулятор команды timedatectl

В симуляторе ниже можно самому ввести команды для проверки времени, вывода списка часовых поясов, смены пояса и проверки синхронизации через chronyc.

Симулятор команды timedatectlsystemd 252 · chrony 4.8
[root@server work]#
Работает только в браузере. Изменённый часовой пояс после перезагрузки страницы возвращается к началу (Etc/UTC), а ↑↓ вызывает ранее введённые команды.

2️⃣ Состояние синхронизации времени на сервере Linux

Строка System clock synchronized показывает, считает ли ядро часы синхронизированными, а строка NTP service — запущена ли служба синхронизации, которую timedatectl может включать и выключать. В show те же значения выводятся как NTPSynchronized и NTP, а CanNTP показывает, есть ли служба синхронизации, которую можно включать и выключать.

На сервере AlmaLinux 9 с chrony все три значения были yes.

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=yes
NTP=yes
NTPSynchronized=yes

На сервере Debian 12, где время выставляет ntpsec, yes было только у NTPSynchronized, а CanNTP и NTP были no. Поэтому на экране status этого сервера строка NTP service показала n/a.

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=no
NTP=no
NTPSynchronized=yes

Сама служба ntpsec работала.

systemctl is-active ntpsec
active

timedatectl знает только те службы синхронизации, что записаны в файлах списков в папке ntp-units.d, а пакеты дистрибутива кладут эти файлы в /usr/lib/systemd/ntp-units.d/ (по официальному руководству). На сервере AlmaLinux 9 был файл списка, установленный пакетом chrony, с одной строкой chronyd.service.

cat /usr/lib/systemd/ntp-units.d/50-chronyd.list
chronyd.service
rpm -qf /usr/lib/systemd/ntp-units.d/50-chronyd.list
chrony-4.8-10.el9.x86_64

На сервере Debian 12 этой папки не было. Поскольку ntpsec нет в списке, timedatectl знал, что часы синхронизированы, но не мог включить или выключить эту службу.

ls /usr/lib/systemd/ntp-units.d/
ls: cannot access '/usr/lib/systemd/ntp-units.d/': No such file or directory
🖥️ timedatectlstatus, show, set-ntp
ntp-units.d/*.listСписок служб синхронизации, которые включает и выключает timedatectl
chronyd.serviceЕсть в списке → NTP service: active
ntpsec.serviceНет в списке → NTP service: n/a

3️⃣ Проверка синхронизации времени с помощью chronyc

На сервере с chrony то, по какому серверу времени идут часы, проверяют командой chronyc. sources выводит серверы времени, которые опрашивает chronyd, и их состояние, по одному на строку.

chronyc sources
MS 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] +/-  312us

Символ ^ в начале обозначает сервер времени, * вторым символом — опорный сервер, по которому сейчас идут часы, а - — кандидата, не включённого в расчёт. Poll 4 у опорного сервера означает опрос каждые 16 секунд (2 в степени 4), а Reach 377 — что получены все восемь последних ответов.

tracking показывает, насколько системные часы расходятся со временем опорного сервера.

chronyc tracking
Reference 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     : Normal

По строке System time системные часы отставали от времени NTP на 0.000002422 секунды, а Leap status был Normal. Update interval 16.3 секунды — это промежуток между двумя последними обновлениями часов.

Какие серверы опрашивать, задают строки pool и server в /etc/chrony.conf. Если убрать комментарии и пустые строки, останутся только строки настроек.

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 4

Строка pool опрашивает пул NTP AlmaLinux, а prefer в последней строке server — параметр, с которым chronyd выбирает этот сервер раньше других. makestep 1.0 3 — настройка, при которой в первые три обновления после запуска chronyd часы, ушедшие больше чем на 1 секунду, выставляются одним шагом, а дальше подстраиваются постепенно: часы идут чуть быстрее или медленнее. rtcsync заставляет ядро каждые 11 минут записывать системное время в аппаратные часы (по официальной документации).

На сервере Debian 12 с ntpsec то же самое проверили командой ntpq -p. Символ * в начале — опорный сервер, и все три сервера опрашивались каждые 1024 секунды.

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.7070

4️⃣ Смена часового пояса с помощью timedatectl

Имена часовых поясов смотрят через list-timezones. Большинство имеет вид Континент/Город, по одному на строку, и на обоих серверах их было 598.

timedatectl list-timezones | head -5
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
timedatectl list-timezones | wc -l
598

Список длинный, поэтому при поиске имени фильтруйте его через grep.

timedatectl list-timezones | grep -i new_york
America/New_York

Часовой пояс меняют, указав после set-timezone имя из списка. Эта команда заменяет ссылку /etc/localtime на новый файл часового пояса, поэтому под обычной учётной записью её запускают с sudo.

sudo timedatectl set-timezone America/New_York

Является ли /etc/localtime ссылкой на файл часового пояса, проверяют через ls -l.

ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Sep 24 12:52 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

Имя, которого нет в списке, было сразу отклонено ещё до смены часового пояса.

timedatectl set-timezone Mars/Olympus
Failed to set time zone: Invalid or not installed time zone 'Mars/Olympus'

Смена часового пояса не меняет время системных часов; в новом поясе выводятся только Local time и результат команды date. На сервере, где аппаратные часы идут по UTC, аппаратные часы тоже не меняются (по официальному руководству).

5️⃣ Включение NTP и ручная установка времени с помощью timedatectl

set-ntp true запускает первую службу из списка служб синхронизации и включает её запуск при загрузке. false останавливает службы из списка и отключает их запуск при загрузке (по официальному руководству).

sudo timedatectl set-ntp true

На сервере Debian 12 без файла списка команда даже с false, то есть текущим значением, завершилась сообщением NTP not supported. Службу, которой нет в списке, например ntpsec, запускают и останавливают напрямую через systemctl.

timedatectl set-ntp false
Failed to set ntp: NTP not supported

Чтобы выставить время вручную, укажите дату и время после set-time. Эта команда выставляет аппаратные часы вместе с системными.

sudo timedatectl set-time '2026-10-28 20:00:00'

На сервере Debian 12 ввод значения в неверном формате завершился ошибкой, время не изменилось.

timedatectl set-time bad
Failed to parse time specification 'bad': Invalid argument

Чтобы на сервере с chrony одним шагом выставить сильно ушедшие часы, используют chronyc makestep.

sudo chronyc makestep

makestep отбрасывает остаток разницы, который подстраивался постепенно, и сразу переводит системные часы на эту величину. Официальная документация предупреждает, что резкая смена времени может повлиять на часть программ, поэтому используйте её, только когда часы ушли слишком далеко, чтобы подстраивать их медленно.

🔢 FAQ & рекомендуемые материалы

Службы NTP, такие как chrony и ntpsec, постоянно держат часы синхронизированными, поэтому запускать rdate по cron почти никогда не нужно. На проверенном сервере AlmaLinux 9 rdate не был установлен и не было его и в списке пакетов, доступных для установки. В репозитории сервера Debian 12 был пакет rdate 1.11, но он не был установлен.

timesync-status — команда только для systemd-timesyncd. И на сервере AlmaLinux 9 с chrony, и на сервере Debian 12 с ntpsec она завершилась ошибкой Failed to query server. На таких серверах состояние синхронизации проверяют через chronyc tracking или ntpq -p.

В официальном руководстве сказано, что аппаратные часы по местному времени могут вызывать проблемы при смене часового пояса или переходе на летнее время. Поэтому рекомендуется по возможности держать их в UTC, а команда для перевода в UTC — sudo timedatectl set-local-rtc 0. На обоих проверенных серверах было no (UTC).

ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Докажите, что вы человек: 10   +   2   =