linux-labs

Вики / Службы и systemd

Время, часовой пояс и NTP

Команда Ubuntu 24.04 · systemd СлужбыВремя и NTPsystemd

Системное время, таймзона и синхронизация по NTP (systemd-timesyncd).

Точное время важно: TLS-сертификаты, логи, cron, кластеры, Kerberos ломаются при расхождении. В Ubuntu временем заведует systemd (systemd-timesyncd — лёгкий NTP-клиент; для серьёзного NTP ставят chrony).

timedatectl                       # время, таймзона, статус синхронизации
timedatectl list-timezones        # список зон
timedatectl list-timezones | grep -i moscow
sudo timedatectl set-timezone Europe/Moscow   # часовой пояс (симлинк /etc/localtime)
sudo timedatectl set-ntp true                 # включить синхронизацию по NTP
timedatectl timesync-status                   # сервер, offset, задержка
timedatectl show-timesync --all               # все детали timesyncd
sudo timedatectl set-time '2026-01-01 12:00:00'  # вручную (сначала set-ntp false)
sudo timedatectl set-local-rtc 0              # RTC в UTC (правильно; 1 = local, для Windows dual-boot)
date ; date -u                                # локальное / UTC
date +%s                                      # unix-время (epoch)
hwclock --show                                # аппаратные часы (RTC)

Для серверов/кластеров вместо timesyncd обычно chrony:

sudo apt install chrony
chronyc tracking                  # текущая точность, offset, источник
chronyc sources -v                # серверы и их состояние (* = выбранный)
chronyc makestep                  # резко подвести часы (после большого расхождения)
# серверы: /etc/chrony/chrony.conf (директивы server/pool)

timesyncd и chrony конфликтуют (оба NTP-клиенты). Включаешь chrony — timesyncd выключается автоматически.

Время «уехало», логи/сертификаты странные

timedatectlSystem clock synchronized: no. Включи NTP: sudo timedatectl set-ntp true; проверь systemctl status systemd-timesyncd и доступность NTP (chronyc sources или порт 123/udp наружу — см. firewall).

set-time не работает

Сначала выключи автосинхронизацию: sudo timedatectl set-ntp false, потом ставь время.

Разное время в логах и date

Логи часто в UTC, а date — в локальной зоне. Сверяйся с timedatectl (показывает обе) или date -u. Журнал в локальной зоне: journalctl уже учитывает TZ.

Часы «прыгают» после ребута

RTC в неверном режиме (set-local-rtc). На Linux-сервере держи RTC в UTC (set-local-rtc 0).

В контейнере неверная зона

Таймзона хоста ≠ контейнера; задаётся переменной TZ или монтированием /etc/localtime.

timedatectl                       # время + таймзона + NTP
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-ntp true     # включить синхронизацию
timedatectl timesync-status       # offset/сервер
chronyc tracking ; chronyc sources -v   # если chrony
date ; date -u ; date +%s         # локальное / UTC / epoch

См. также