SystemdDoctor
мешает работе время таймеры

Служба синхронизации перевела часы скачком

При большом расхождении служба синхронизации не подстраивает часы плавно, а переводит их скачком. Для системы это означает разрыв в журнале, сработавшие или пропущенные таймеры и неверные измерения длительности в приложениях.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Расхождение превысило порог плавной подстройки

    Плавная подстройка применима к небольшим расхождениям. Большое расхождение переводится скачком.

  2. Таймеры сработали или были пропущены

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

  3. Аппаратные часы расходятся с системными

    После перезагрузки время берётся из аппаратных часов. Их расхождение повторяет ситуацию при каждой загрузке.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Часы, часовой пояс, синхронизация и аппаратные часы.

timedatectl

Когда время менялось скачком.

journalctl -b --no-pager | grep -i "Time has been changed" | tail

Состояние таймеров после перевода часов.

systemctl list-timers --all --no-pager | head

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Расхождение превысило порог плавной подстройки
Почему происходит
Плавная подстройка применима к небольшим расхождениям. Большое расхождение переводится скачком.
Как проверить
Посмотрите сообщения о переводе часов.
journalctl -b --no-pager | grep -iE "Time has been changed|System clock time unset|step" | tail
timedatectl
Как исправить
Разберитесь, почему часы разошлись: обычно это остановленная служба синхронизации или неверное время в аппаратных часах. Скачок — следствие, а не причина.
2. Таймеры сработали или были пропущены
Почему происходит
Перевод часов вперёд выглядит как наступление пропущенных моментов, назад — как долгое ожидание.
Как проверить
Посмотрите таймеры и время их срабатываний.
systemctl list-timers --all --no-pager | head
journalctl -b --no-pager | grep -i "Time has been changed" | tail -3
Как исправить
Для заданий, чувствительных к скачкам, используйте отсчёт от события вместо календарных моментов. Плюс проверьте, не выполнились ли задания дважды.
3. Аппаратные часы расходятся с системными
Почему происходит
После перезагрузки время берётся из аппаратных часов. Их расхождение повторяет ситуацию при каждой загрузке.
Как проверить
Сравните системные и аппаратные часы.
timedatectl | grep -iE "RTC|Universal"
sudo hwclock --show 2>/dev/null
Как исправить
Синхронизируйте аппаратные часы с системными после настройки времени. Иначе каждая загрузка начинается с неверного времени.

Пример вывода

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

systemd-timesyncd[730]: Initial clock synchronization to Mon 2026-09-15 19:02:11.402310 MSK.
systemd[1]: Time has been changed
systemd[1]: mytask.timer: Adjusting timer to elapsed time.
systemd[1]: Started mytask.service - Nightly task.

Связанные ошибки

Где встречается чаще всего

Источники

  • systemd-timesyncd.service(8)
    Начальная синхронизация и перевод часов.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на systemd 255: при большом расхождении часы переводятся скачком с записью в журнал.
    собственная проверка, systemd 255
    сверено 15 сентября 2026