為什麼 Debian 中的時間會自動改變?

為什麼 Debian 中的時間會自動改變?

Debian 8。時間同步系統被停用。 ntp、rdate、sdwdate 未安裝。

# timedatectl
Local time: Thu 2019-08-22 14:02:05 +03
Universal time: Thu 2019-08-22 11:02:05 UTC
RTC time: Thu 2019-08-22 11:00:10
Time zone: Europe/Minsk (+03, +0300)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a

設定時間後一秒,時間會變化幾分鐘。

例子:

# ntpdate 0.ru.pool.ntp.org  && date && sleep 1 && date
22 Aug 14:02:28 ntpdate[31388]: step time server 195.211.77.68 offset -115.009072 sec
Thu Aug 22 14:02:28 +03 2019
Thu Aug 22 14:04:24 +03 2019

# hwclock --hctosys && date && sleep 1 && date
Thu Aug 22 14:01:51 +03 2019
Thu Aug 22 14:03:46 +03 2019

# date -s "2019-08-22 14:04:53" && date && sleep 1 && date
Thu Aug 22 14:04:53 +03 2019
Thu Aug 22 14:04:53 +03 2019
Thu Aug 22 14:06:49 +03 2019

手動更改時,訊息會出現在日誌中

Aug 22 16:30:50 wisi systemd[1200]: Time has been changed
Aug 22 16:30:50 wisi systemd[1]: Time has been changed
Aug 22 16:32:45 wisi systemd[1200]: Time has been changed
Aug 22 16:32:45 wisi systemd[1]: Time has been changed

這裡前兩行是關於手動時間變更的,後兩行是關於系統「調整」時間的事實。

# ps afx | grep [1]200
 1200 ?        Ss     0:06 /lib/systemd/systemd --user

嘗試停用計時器.目標、時間同步.目標、systemd-timesyncd沒有影響。

在tcpdump日誌中可以看到「調整」時第123埠沒有請求。 「調整」的時間不是恆定的,是變化的,觀察時間為1至5分鐘。

是什麼原因造成的以及如何消除它?

更新1: @塞思,

更改後查看 timedatectl 會很有趣。

# timedatectl && ntpdate 0.ru.pool.ntp.org  && timedatectl && sleep 1 && timedatectl
      Local time: Fri 2019-08-23 14:10:57 +03
  Universal time: Fri 2019-08-23 11:10:57 UTC
        RTC time: Fri 2019-08-23 11:09:19
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
23 Aug 14:09:25 ntpdate[19282]: step time server 192.36.143.130 offset -98.695079 sec
      Local time: Fri 2019-08-23 14:09:25 +03
  Universal time: Fri 2019-08-23 11:09:25 UTC
        RTC time: Fri 2019-08-23 11:09:26
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
      Local time: Fri 2019-08-23 14:11:05 +03
  Universal time: Fri 2019-08-23 11:11:05 UTC
        RTC time: Fri 2019-08-23 11:09:27
       Time zone: Europe/Minsk (+03, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

你說它們沒有效果是什麼意思?您是否驗證過調整是否正確?

是的,當然,當啟用預設服務時,問題就開始了。為了測試,我試圖阻止它們,但這並不影響結果。

UPD2

作為測試,我斷開了所有網路電纜。一切都和以前一樣。但現在可以排除任何「網路」假設。

答案1

Oskam 將時間返回到先前設定的時間。

https://github.com/gfto/oscam/blob/2780c48789c8e1427df4078ea9b06e0b51594bbc/oscam-time.c

#if defined(CLOCKFIX)
    if (tv.tv_sec > lasttime.tv_sec || (tv.tv_sec == lasttime.tv_sec && tv.tv_usec >= lasttime.tv_usec)){ // check for time issues!
        lasttime = tv; // register this valid time 
    }
    else
    {
        tv = lasttime;
        settimeofday(&tv, NULL); // set time back to last known valid time
        //fprintf(stderr, "*** WARNING: BAD TIME AFFECTING WHOLE OSCAM ECM HANDLING, SYSTEMTIME SET TO LAST KNOWN VALID TIME **** \n");
    }

相關內容