Поддержание точного системного времени с помощью timedatectl и chronyd
На этом шаге вы узнаете, как поддерживать точное системное время с помощью команды timedatectl и поймете роль службы chronyd. Точное ведение времени имеет решающее значение для ведения журналов, безопасности и многих сетевых служб.
1. Использование timedatectl для управления системным временем и часовыми поясами:
Команда timedatectl предоставляет обзор текущих системных настроек, связанных со временем, включая местное время, всемирное координированное время (UTC), время RTC, часовой пояс и статус синхронизации NTP.
Давайте проверим текущие настройки времени вашей системы:
timedatectl
Вы должны увидеть вывод, аналогичный этому (точное время и дата будут отражать текущее системное время):
Local time: Sun 2025-06-15 21:46:11 EDT
Universal time: Mon 2025-06-16 01:46:11 UTC
RTC time: Mon 2025-06-16 01:46:10
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Вы можете перечислить все доступные часовые пояса, используя опцию list-timezones:
timedatectl list-timezones | less
Нажмите q, чтобы выйти из less. Часовые пояса называются на основе базы данных часовых поясов Internet Assigned Numbers Authority (IANA), обычно по континенту/океану, а затем по крупнейшему городу.
Чтобы изменить часовой пояс системы, вы используете опцию set-timezone. Например, давайте изменим часовой пояс на America/Phoenix. Для этого вам потребуются привилегии sudo.
sudo timedatectl set-timezone America/Phoenix
Теперь проверьте изменение:
timedatectl
Вы должны увидеть, что часовой пояс обновился до America/Phoenix.
Вы также можете вручную установить текущее время системы, используя опцию set-time. Формат: "YYYY-MM-DD hh:mm:ss", но вы можете опустить дату или время. Давайте установим время на 09:00:00 (для текущей даты).
sudo timedatectl set-time 09:00:00
Проверьте изменение времени:
timedatectl
Наконец, опция set-ntp включает или отключает синхронизацию NTP для автоматической корректировки времени. Она принимает true или false в качестве аргумента. Давайте на мгновение отключим синхронизацию NTP (мы снова включим ее позже).
sudo timedatectl set-ntp false
Проверьте статус службы NTP:
timedatectl
Вы должны увидеть NTP service: inactive.
2. Понимание и настройка службы chronyd:
Служба chronyd — это демон, который поддерживает точность часов реального времени (RTC) системы, синхронизируя их с серверами Network Time Protocol (NTP). Это клиент NTP по умолчанию в Red Hat Enterprise Linux.
Файл конфигурации для chronyd — /etc/chrony.conf. По умолчанию он использует общедоступные серверы NTP. В реальном сценарии вы можете настроить его на использование внутренних серверов NTP.
Давайте посмотрим файл chrony.conf по умолчанию.
cat /etc/chrony.conf
Вы увидите строки, начинающиеся с server или pool, которые определяют источники NTP. Опция iburst рекомендуется, поскольку она быстро выполняет четыре измерения для более точной начальной синхронизации.
Stratum (страта) источника времени NTP указывает его качество. Stratum 0 — это эталонные часы, stratum 1 напрямую подключен к эталонным часам, а stratum 2 синхронизируется с сервером stratum 1.
Поскольку systemctl недоступен в этой среде контейнера, мы не можем напрямую перезапустить chronyd, чтобы применить изменения конфигурации. Однако мы можем смоделировать изменение конфигурации, изменив файл.
Давайте повторно включим синхронизацию NTP с помощью timedatectl.
sudo timedatectl set-ntp true
Снова проверьте статус службы NTP:
timedatectl
Вы должны увидеть NTP service: active.
Команда chronyc действует как клиент для службы chronyd. Вы можете использовать ее для мониторинга статуса синхронизации. Команда chronyc sources показывает текущие источники времени и их статус синхронизации.
chronyc sources -v
Вывод покажет подробности об источниках NTP. Звездочка * в поле S (Source state - состояние источника) указывает на источник, с которым chronyd в данный момент синхронизирован.
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 100.100.61.88 1 5 377 16 +1824us[+2180us] +/- 85ms
...output omitted...
Этот вывод подтверждает, что ваша система активно синхронизирует свое время с сервером NTP.