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
時刻を設定してから1秒後には、数分ずつ変化します。
例:
# 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
ここで、最初の 2 行は手動での時間変更に関するもので、次の 2 行はシステムが時間を「調整」したという事実に関するものです。
# ps afx | grep [1]200
1200 ? Ss 0:06 /lib/systemd/systemd --user
無効化の試みtimers.target、time-sync.target、systemd-timesyncd効果はありません。
tcpdump ログでは、「調整中」のときに 123 番目のポートにリクエストがないことがわかります。「調整」の時間は一定ではなく変化し、1 分から 5 分まで観測されました。
原因は何で、どうすれば治りますか?
UPD1: @セス、
変更後の 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");
}