Администрирование Linux-серверов

Синхронизация времени в Linux: timedatectl, chrony и проверка NTP

Как задать часовой пояс, установить и настроить chrony, запустить службу и подтвердить синхронизацию системных часов с NTP-источниками.

13 минут
абстрактная иллюстрация синхронизации времени Linux-сервера
В системах с systemd часовой пояс обычно задают через timedatectl, а системные часы синхронизирует chrony: демон chronyd и его клиент chronyc. После настройки недостаточно увидеть активную службу: проверьте timedatectl, выбранный NTP-источник в chronyc sources и состояние синхронизации в chronyc tracking. Команды ниже относятся к явно перечисленным релизам; для другого выпуска имена unit, пути и исходную конфигурацию нужно сверить с документацией поставщика ОС и chrony.

Поддерживаемые релизы и различия в chrony

Инструкция составлена по документации Ubuntu Server 22.04 LTS и 24.04 LTS, Debian 12, RHEL 8 и 9, Rocky Linux 8 и 9, AlmaLinux 8 и 9, а также CentOS Stream 9. CentOS Linux 7 и CentOS Linux 8 сюда не входят: их статус и различия с Stream разобраны в статье «CentOS Stream и CentOS 7: статус поддержки, различия и выбор сценария».

Пакет, unit и основной файл конфигурации для указанных релизов

Семейство и релизыПакетSystemd unitОсновной конфигурационный файл
Ubuntu Server 22.04/24.04; Debian 12chronychrony.service/etc/chrony/chrony.conf
RHEL 8/9; Rocky Linux 8/9; AlmaLinux 8/9; CentOS Stream 9chronychronyd.service/etc/chrony.conf

Проверяйте конкретный релиз

Пакет chrony обычно устанавливает и chronyd, и chronyc, но имена unit, включаемые файлы и исходные источники могут меняться между дистрибутивами и релизами. Не переносите путь, unit или конфигурацию с другого сервера без проверки. Точный синтаксис директив и доступные поля chronyc сверяйте с руководством chrony, поставляемым для вашего выпуска ОС.

Сначала определите ОС и текущее состояние времени

Не смешивайте три сущности. Системные часы — время, которым пользуются ядро и процессы. RTC, или аппаратные часы, сохраняют время при выключенном сервере. Часовой пояс — правило представления локального времени. Смена часового пояса не исправляет неверные системные часы: она меняет только отображение local time и расчёт локального времени для программ.

Зафиксируйте дистрибутив, его версию и ядро до установки или изменения службы времени.
cat /etc/os-release && uname -r
Показывает локальное и универсальное время, состояние системных часов, RTC, часовой пояс, состояние сетевой синхронизации и известной systemd NTP-службы.
timedatectl status
Local time: Sat 2026-09-26 14:30:00 MSK
Universal time: Sat 2026-09-26 11:30:00 UTC
RTC time: Sat 2026-09-26 11:30:01
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Local time — отображение с учётом зоны; Universal time — UTC-представление системных часов; RTC time — показания аппаратных часов. System clock synchronized: yes означает, что systemd считает системные часы синхронизированными. NTP service отражает службу, которую systemd распознаёт как поставщика синхронизации, а не обязательно именно chrony. RTC in local TZ: no обычно означает хранение RTC в UTC.

Не исправляйте время сменой зоны и не устанавливайте дату вручную без необходимости

Большая коррекция времени на рабочем сервере может изменить порядок записей в журналах, повлиять на сроки действия сертификатов и учётных данных, задания Cron, systemd timers и поведение приложений. Сначала оцените зависимые сервисы, согласуйте окно работ и способ отката. Настройка расписаний вынесена в «Cron и systemd timers: задачи по расписанию и диагностика сбоев».

Для серверов обычно удобен RTC в UTC, но это не универсальное требование: учитывайте политику организации, гипервизор, ОС в dual boot и рекомендации поставщика платформы. timedatectl показывает текущий режим через RTC in local TZ. Не меняйте его только ради устранения неверного отображения local time — сначала настройте часовой пояс и синхронизацию системных часов.

Установите правильный часовой пояс через timedatectl

Поиск и установка часового пояса

timedatectl работает в системах с systemd. Команда изменения зоны не должна использоваться для ручной коррекции отставания или спешки часов.

  1. 1
    Найдите идентификатор зоны
    Выведите известные зоны и отфильтруйте нужный регион. Например, для поиска московской зоны используйте timedatectl list-timezones | grep -i moscow. Выберите идентификатор формата Region/City, а не сокращение вроде MSK.
  2. 2
    Установите зону
    Выполните sudo timedatectl set-timezone Europe/Moscow, заменив значение на выбранный идентификатор. Команда меняет настройку часового пояса; системное время при этом не должно сдвигаться.
  3. 3
    Подтвердите результат
    Выполните timedatectl status. Убедитесь, что строка Time zone содержит ожидаемый идентификатор и смещение. Сверьте Universal time и Local time: разница должна соответствовать зоне.

По документации systemd, timedatectl set-timezone устанавливает системную временную зону, а timedatectl set-ntp true|false запрашивает включение или отключение доступной службы сетевой синхронизации. Наличие команды, перечень отображаемых полей и фактический результат зависят от версии systemd, дистрибутива и установленной NTP-службы. set-ntp true не обязан устанавливать, выбирать или настраивать chrony; на части систем он управляет systemd-timesyncd, а без подходящей службы может завершиться ошибкой.

Установите chrony и исключите второй NTP-клиент

Chrony состоит из демона chronyd, который корректирует системные часы, и chronyc — утилиты просмотра состояния и управления. До установки или включения chrony установите, какая служба уже управляет временем. Одновременная работа нескольких NTP-клиентов на одном хосте создаёт конфликтующие корректировки.

Сначала проверьте состояние времени, затем найдите работающие службы синхронизации и отдельно все известные системе связанные service unit. Совпадение имени ещё не доказывает назначение службы: перед остановкой проверьте её через `systemctl status ИМЯ.service`.
timedatectl status
systemctl list-units --type=service --state=running | grep -Ei 'chrony|chronyd|timesync|ntp'
systemctl list-unit-files --type=service | grep -Ei 'chrony|chronyd|timesync|ntp'

Если активен systemd-timesyncd.service или другой NTP-клиент, не запускайте chrony параллельно. Подтвердите назначение текущего клиента, затем остановите и отключите именно его штатным способом, если по политике сервера его заменяет chrony. Для systemd-timesyncd на системах, где этот unit существует, обычно применяют sudo systemctl disable --now systemd-timesyncd.service; затем повторно проверьте статус. Не выполняйте команду вслепую: unit может отсутствовать, быть маскированным либо пакет chrony может штатно заменять или отключать другой time-daemon. Различия сверяйте по официальным материалам: Ubuntu Server — синхронизация времени с chrony, пакет chrony в Debian 12, руководства RHEL 8 и RHEL 9, а для производных дистрибутивов — официальные записи пакета chrony в репозиториях Rocky Linux, AlmaLinux и CentOS Stream.

Перед установкой обновите индекс пакетов и проверьте план пакетной операции по инструкциям «APT в Ubuntu и Debian: установка, обновление, удаление и очистка пакетов» или «DNF и YUM: установка, обновление и удаление пакетов».

Установка chrony

  1. 1
    Ubuntu Server или Debian
    На Ubuntu Server 22.04/24.04 LTS и Debian 12 установите пакет: sudo apt update && sudo apt install chrony.
  2. 2
    RHEL-подобная система
    На RHEL 8/9, Rocky Linux 8/9, AlmaLinux 8/9 и CentOS Stream 9 установите пакет: sudo dnf install chrony. В среде, где yum остаётся совместимой командой, предпочтительнее ориентироваться на dnf из документации текущего релиза.
  3. 3
    Проверьте установку
    Выполните chronyc -v и rpm -q chrony в RPM-семействе либо dpkg-query -W chrony в DEB-семействе. Версия chrony понадобится при сравнении формата вывода с документацией.

Настройка NTP-источников в chrony

Используйте только NTP-серверы, разрешённые организацией, или пулы, рекомендованные поставщиком ОС для конкретной сети. На корпоративном сервере источники нередко задаются внутренней политикой, DHCP или средствами управления конфигурацией. Не заменяйте работающий список случайными публичными серверами: это может нарушить требования безопасности, маршрутизацию и ожидаемую схему времени.

В Ubuntu Server и Debian 12 основной файл — /etc/chrony/chrony.conf; в RHEL 8/9, Rocky Linux 8/9, AlmaLinux 8/9 и CentOS Stream 9 — /etc/chrony.conf. Внутри могут быть include, confdir или sourcedir: источники могут поступать из дополнительных файлов. До правки сохраните исходный файл и выясните, какие директивы уже подключены. Не удаляйте неизвестные строки: среди них могут быть параметры доступа, журналирования, сохранения дрейфа или источники, управляемые ОС.

фрагмент chrony.conf
# Пример: замените имена на источники, утверждённые в вашей сети
server ntp1.example.internal iburst
server ntp2.example.internal iburst

# Либо используйте разрешённый политикой пул:
# pool pool.example.internal iburst

Директива server задаёт один NTP-источник по имени или адресу; pool задаёт пул, из которого chrony выбирает несколько источников. Опция iburst ускоряет начальные измерения после запуска или появления источника. driftfile задаёт файл, где chronyd хранит оценку систематического хода часов; путь зависит от дистрибутива и исходного конфига, поэтому сохраните используемое в нём значение. Формат makestep threshold limit разрешает скачкообразную коррекцию, если требуемое смещение больше threshold, но только для ограниченного числа обновлений limit; отрицательное значение лимита допускает такое поведение без ограничения. Доступные опции и их точная семантика зависят от версии chrony.

makestep может резко изменить системное время

Без makestep chronyd обычно корректирует время постепенно, изменяя частоту системных часов. Step-коррекция сразу меняет значение часов. Пример makestep 1.0 3 часто используют, чтобы исправить крупную ошибку вскоре после старта, но он не является обязательным и безопасным для каждого приложения. Не добавляйте makestep с неограниченным лимитом на работающий сервер без оценки последствий.

Изменение источников chrony

  1. 1
    Сохраните и прочитайте текущую конфигурацию
    Для DEB-систем используйте sudo cp -a /etc/chrony/chrony.conf /etc/chrony/chrony.conf.bak, для RPM-систем — sudo cp -a /etc/chrony.conf /etc/chrony.conf.bak. Затем просмотрите файл и его директивы включения.
  2. 2
    Добавьте либо замените источники
    Отредактируйте основной файл или предусмотренный поставщиком подключаемый файл. Оставьте только согласованный набор server и/или pool, если именно это является целью изменения. Не дублируйте старые и новые источники случайно.
  3. 3
    Примените изменения и проверьте источник
    Перезапустите целевой unit chrony, затем выполните chronyc sources -v и chronyc tracking. Точный способ перезапуска и расширенная диагностика unit описаны в «systemd и systemctl: управление службами и автозагрузкой Linux».

Запустите chronyd и включите автозагрузку

Имя Systemd unit зависит от семейства ОС: на Ubuntu Server и Debian из перечисленных релизов используется chrony.service, в указанных RHEL-подобных системах — chronyd.service. active означает, что процесс службы запущен, но само по себе не доказывает синхронизацию.

СистемаЗапуск и автозагрузкаПроверка
Ubuntu Server 22.04/24.04; Debian 12sudo systemctl enable --now chrony.servicesystemctl status chrony.service
RHEL 8/9; Rocky Linux 8/9; AlmaLinux 8/9; CentOS Stream 9sudo systemctl enable --now chronyd.servicesystemctl status chronyd.service

После изменения конфигурации используйте sudo systemctl restart chrony.service или sudo systemctl restart chronyd.service для соответствующего релиза. Если unit не найден, не подставляйте имя от другого дистрибутива: проверьте установленный пакет и systemctl list-unit-files. Разбор состояний failed, inactive и Unit not found находится в «Служба systemd не запускается: диагностика ошибок и восстановление».

Проверка NTP-синхронизации через chronyc

Сразу после запуска службы, перезагрузки или замены источников синхронизация может ещё не установиться. Дайте chronyd получить измерения, затем проверяйте состояние несколькими командами. Набор полей и формат вывода различаются между версиями chrony, поэтому ориентируйтесь на признаки, а не на фиксированные столбцы.

Показывает источники, их состояние, stratum, последнее измерение, смещение и достижимость.
chronyc sources -v
Вывод:
Ищите строку с `^*`: это источник, выбранный для синхронизации. `^+` — пригодный дополнительный кандидат. `^?` обычно означает, что источник пока недоступен или от него нет валидных измерений. Поле Reach — восьмеричный регистр недавних успешных ответов: `0` означает отсутствие успешных ответов, а ненулевое значение — что ответы были.
Показывает текущее состояние системных часов относительно выбранного источника.
chronyc tracking
Вывод:
Проверьте `Reference ID` или имя источника, `Stratum`, `System time`, `Last offset` и `Leap status`. Обычное синхронизированное состояние — `Leap status : Normal`. Значения `Insert second` и `Delete second` могут появиться при объявленной вставке или удалении секунды и сами по себе не означают потерю синхронизации. `Not synchronised` означает, что chronyd не синхронизировал часы.
Показывает, сколько источников chronyd считает online, offline, burst или unknown. Команда помогает сопоставить конфигурацию с текущим состоянием опроса.
chronyc activity
Повторно проверьте системное представление времени после получения синхронизации. Строки `System clock synchronized` и `NTP service` полезны как дополнительная проверка, но источником истины о chrony остаются `chronyc sources` и `chronyc tracking`.
timedatectl status

Если chrony запущен, но время не синхронизируется

Проблема

Служба active, но chronyc tracking показывает Not synchronised

Возможные причины

  • В конфигурации неверное имя источника, адрес либо включаемый файл.
  • После запуска ещё не накоплены измерения.
  • Одновременно действует другой NTP-клиент.
  • Служба читает не тот файл, который был отредактирован, либо конфигурация не была применена.

Решение

Проверьте systemctl status целевого unit, фактические server и pool в основном файле и подключаемых файлах, затем chronyc sources -v, chronyc activity и chronyc tracking. Убедитесь, что второй клиент времени остановлен. Посмотрите сообщения chronyd через journalctl -u chrony.service в Ubuntu/Debian или journalctl -u chronyd.service в RHEL-подобной системе. Работа с журналами подробно описана в «Журналы Linux: journalctl, rsyslog и logrotate». Если локальная конфигурация и состояние службы корректны, а ответы от источников не появляются, переходите к отдельной диагностике сети, маршрутизации, UDP-пути и DNS.

Как избежать

Фиксируйте утверждённые источники времени в управляемой конфигурации, не запускайте несколько NTP-клиентов и проверяйте `sources -v` с `tracking` после каждого изменения.

Проблема

Время в журналах выглядит неверным

Возможные причины

  • Неверно выбран часовой пояс.
  • Ранее системные часы были неверны, и старые записи уже получили неверные метки.
  • При загрузке системные часы были инициализированы из неверно настроенного RTC до последующей NTP-коррекции.
  • Была выполнена крупная step-коррекция.

Решение

Сначала сравните Local time, Universal time, RTC time, Time zone и RTC in local TZ в timedatectl status. Небольшое текущее расхождение между RTC и системными часами само по себе не доказывает ошибку. Если выбрана неверная зона, установите правильную способом из раздела выше: это исправит локальное представление абсолютных меток в инструментах, использующих текущую системную зону. Затем подтвердите текущую NTP-синхронизацию через chronyc tracking. Смена зоны или ручная установка даты не перепишет метки, созданные при неверных системных часах, и не исправит локальное время, уже записанное приложением непосредственно в текст журнала. Для поиска и интерпретации записей используйте «Журналы Linux: journalctl, rsyslog и logrotate».

Как избежать

Устанавливайте часовой пояс при вводе сервера в эксплуатацию, храните RTC в согласованном с платформой режиме и контролируйте NTP-синхронизацию до запуска критичных приложений.

Граница этой инструкции

Если chronyc sources -v показывает недоступные источники или имя не разрешается, сначала сверьте записи server и pool с утверждённым списком вашей организации и исправьте опечатки либо устаревшие значения. Не подменяйте диагностику случайным выбором публичных серверов. Если конфигурация верна, но разрешение имён или ответы от источников не появляются, переходите к отдельной диагностике маршрутизации, фильтрации NTP-трафика и сетевой достижимости. Настройка системного DNS разобрана в «Настройка DNS-резолвера в Linux: resolv.conf и systemd-resolved».

Термины в статье

Программный слой, который абстрагирует ресурсы физического хоста, выполняет виртуальные машины и управляет ими.
Демон — обычно длительно работающий неинтерактивный процесс, который в фоне выполняет системную, сетевую или прикладную функцию.
Дистрибутив Linux — готовая операционная система на базе ядра Linux, включающая набор программ, репозитории, пакетный менеджер и правила обновления и сопровождения.
Индекс пакетов — набор метаданных репозитория, содержащий сведения о версиях, зависимостях, архитектурах и расположении доступных пакетов.
Процесс — экземпляр выполняемой программы в Linux с PID, виртуальным адресным пространством, состоянием и связанными с ним ресурсами.
Системная служба — программный компонент, которым ОС управляет как логической единицей для фонового выполнения задач или предоставления функций программам и пользователям.
AlmaLinux — корпоративный дистрибутив Linux, поддерживаемый сообществом и AlmaLinux OS Foundation, ориентированный на совместимость с интерфейсами и экосистемой RHEL.
CentOS Linux — прекращённый свободно доступный дистрибутив Linux, создававшийся из исходных пакетов RHEL и ориентированный на бинарную совместимость с соответствующим выпуском RHEL.
CentOS Stream — дистрибутив Linux с непрерывной поставкой пакетов, формирующих следующую минорную версию Red Hat Enterprise Linux; он расположен между Fedora и RHEL.
chrony — программный комплекс для синхронизации системного времени по NTP, рассчитанный в том числе на нестабильную сеть и периодические подключения.
Cron — служба-планировщик в Unix-подобных ОС, запускающая команды по расписаниям из таблиц crontab, обычно с минутной дискретностью.
Debian — универсальный дистрибутив Linux с пакетами DEB и системой APT, известный консервативной веткой Stable и разделением репозиториев по веткам разработки.
journalctl — консольная утилита чтения и фильтрации журнала systemd, выводящая сообщения по времени, юниту, загрузке системы, приоритету и другим полям.
LTS — модель выпуска ПО с продлённым периодом сопровождения, в котором исправления безопасности и критических ошибок поставляются дольше обычного релиза.
NTP — сетевой протокол синхронизации системных часов с источниками точного времени, оценивающий смещение часов и сетевую задержку по временным меткам.
RHEL — корпоративный дистрибутив Linux от Red Hat с фиксированными основными версиями, сертификационной экосистемой и моделью сопровождения, зависящей от подписки.
Rocky Linux — корпоративный дистрибутив Linux, создаваемый из исходных пакетов экосистемы RHEL и ориентированный на совместимость с RHEL без использования его товарных знаков.
RTC — аппаратные часы реального времени, сохраняющие дату и время при выключенном сервере благодаря резервному источнику питания; это не системные часы ОС.
systemctl — командная утилита управления systemd, которая запускает и останавливает юниты, показывает их состояние и настраивает автоматическую активацию.
systemd — система инициализации и менеджер служб Linux, управляющий службами и другими ресурсами как объектами unit, обычно описанными unit-файлами.
Ubuntu Server — серверный вариант дистрибутива Ubuntu на базе Debian с APT и типовыми средствами автоматизации, доступный в виде установочных и готовых образов.

Вопросы по теме

Все вопросы и ответы

Может ли коррекция времени chrony повлиять на cron-задачи?

Да. Крупная коррекция системного времени может повлиять на выполнение заданий Cron и systemd timers, а также изменить порядок событий в журналах и поведение приложений. Особенно осторожно применяйте step-коррекцию через makestep: она сразу меняет показания системных часов. Перед изменениями на рабочем сервере оцените зависимые сервисы и согласуйте окно работ.

Почему время в журналах Linux отображается неверно?

Причина может быть в неверном часовом поясе, ранее ошибочных системных часах, некорректном RTC при загрузке или крупной step-коррекции. Сначала сравните Local time, Universal time, RTC time, Time zone и RTC in local TZ в timedatectl status. Смена зоны исправляет текущее локальное отображение, но не переписывает уже созданные метки журналов.

Можно ли запускать chrony одновременно с systemd-timesyncd?

Нет. Одновременная работа нескольких NTP-клиентов на одном сервере создаёт конфликтующие корректировки системных часов. Перед включением chrony проверьте активные службы через timedatectl status и systemctl. Если по политике сервера chrony заменяет systemd-timesyncd, сначала подтвердите назначение службы, затем остановите и отключите именно её штатным способом.

Исправит ли смена часового пояса неверное системное время?

Нет. Часовой пояс меняет только отображение локального времени и правила его расчёта для программ; системные часы при этом не должны сдвигаться. Для установки зоны используйте timedatectl set-timezone, а правильность времени подтверждайте через chronyc sources -v, chronyc tracking и timedatectl status.

Почему chrony active, но часы не синхронизированы?

Статус active означает только запуск службы, а не успешную синхронизацию. Проверьте chronyc tracking: состояние Not synchronised и отсутствие строки ^* в chronyc sources -v указывают на проблему. Возможны неверный источник или подключаемый файл, отсутствие измерений после запуска, второй NTP-клиент либо неприменённая конфигурация.