LINUX.ORG.RU
ФорумAdmin

Не могу изменить время

 ,


1

3

Странная проблема со временем на сервере. Часы бегут на 37 секунд. Казалось бы, не страшно, но он является ntp-сервером для других устройств.
Пытался синхронизировать время через ntpdate, он показывает, что есть рассинхрон, но время не меняет. Пробовал ntpd -gq, пишет: «ntpd: time set -37.155943s», но время остаётся таким, как было. В итоге уже пытаюсь изменить время через date -s, и оно всё равно не меняется.
Система Debian 11, установлена на физическом железе, сервис systemd-timesyncd отсутствует. Есть systemd-timedated.service, но он похоже запускается только при необходимости. Как это побороть?

Ответ на: комментарий от amd_amd

Эта команда работает нормально, и аппаратные часы выставились точно. Не работает date. Попробовал hwclock --hctosys, но безрезультатно: date всё равно выводит время на 37 секунд вперёд.

ARTIsshoque
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

По ссылке рекомендуют команду ntpd -gq, которую я использовал.
Судя по тому, что время не устанавливается в том числе локально (через date и hwclock), проблема скорее всего кроется в каких-то ограничениях Debian 11 или systemd, и ntp здесь вообще не при делах.

ARTIsshoque
() автор топика

Изменил в /etc/adjtime LOCAL на UTC, после этого один раз сработала команда hwclock --hctosys, теперь секунды показываются правильно, но у меня в hwclock стояло время уже с таймзоной +8, поэтому теперь local time бежит на 8 часов (и universal time тоже), а RTC time установлено верно. Больше фокус с hwclock --hctosys не работает.

ARTIsshoque
() автор топика

ntpd не синхронизирует время если изначальная дельта слишком велика. Так как он пытается плавно управлять ходом времени, чтобы не было «прыжков». Так что сначала нужно синхронизировать время через ntpdate (не сработает при запущенном ntpd), а потом уже пускать ntpd демоном. А вот почему у тебя время в бивис не пишется - мне неведомо. Но по идее плевать, всё равно работать обязано, даже без возможности записи в микруху, если ты сначала синхронизируешься грубо прыжком с помощью ntpdate, а уже потом запустишь демон. Просто тогда у тебя каждый раз при загрузке до запуска ntpdate будет сбитое время.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от Jameson

У меня не устанавливается время командой date -s. В биос время пишется нормально.
Я так понял, в systemd запилили какую-то срань под названием timedatectl, которая почему-то пишет время в RTC clock, а не в Local time. Вот вывод этой команды:

               Local time: Ср 2022-05-25 03:14:54 +08
           Universal time: Вт 2022-05-24 19:14:54 UTC
                 RTC time: Вт 2022-05-24 11:14:54
                Time zone: Asia/Irkutsk (+08, +0800)
System clock synchronized: no
              NTP service: n/a
          RTC in local TZ: no

RTC time я могу менять как с помощью hwclock --set, так и с помощью timedatectl set-time. А local time, который мне и нужно изменить, я не могу записать ни одной командой. В выводе видно, что universal time опережает RTC time на 8 часов, но они должны совпадать.

ARTIsshoque
() автор топика

Кажется нашёл что-то похожее на хабре (https://habr.com/ru/post/464951/), человек столкнулся с той же проблемой, в итоге виновником оказался сторонний пакет, который возвращал время к последнему известному значению. Буду копать в эту сторону. Всем спасибо за ответы.

ARTIsshoque
() автор топика