昨日(7月30日)から/ var/log/syslogに次のものがあります
Dec 16 22:54:05 omap ntpdate[432]: step time server 91.189.94.4 offset 12052648.821465 sec
ntpdate 91.189.94。47月30日から12月16日まで時計を「修正」しました。 http://www.pool.ntp.org/scores/91.189.94.4 によると、そのサーバーは2ミリ秒以上オフではありませんでした。
これで、システムの起動時にdate
コマンドを呼び出して、時計を約1秒の精度で設定するスクリプトができました。粗い時間はローカルネットワークから読み取られ、date
が呼び出されて時間が設定されます。システムにはリアルタイムクロックがなく、インターネット接続がNTPで利用できない可能性があるため、これらの線に沿って何かを行う必要があります。
利用可能な時計がないときにLinuxが最初の時刻をどのように推測するかはわかりませんが、それが非常に間違っている可能性があることを確認しました(これは合理的です)。何が起こったのかについての私の唯一の考えは:
ntpdate
はNTPサーバーとの通信を開始し、3月15日が実際の日付とどの程度間違っているかを判断しましたntpdate
は、時計が12052648秒遅いと判断し、時計が3月15日のままであると想定して、修正を追加しました。率直に言って、私はNTPがどのように機能するかについてあまりよく知りません。上記は合理的ですか?別の説明がありますか?
あなたのセットアップについてもっと知らなくても、あなたの理論はもっともらしく聞こえます。
起動スクリプトを変更して、システム日付を設定するdate
コマンドがntpdate
の開始前に完了するようにする必要があります。
時計がどのように状態になったかはわかりませんが、可能であればdate
コマンドを呼び出すスクリプトを削除することをお勧めしますか?
私が使用したほとんどのシステムで起動時にシステムクロックを設定する通常の方法は次のとおりです。
ntpd
を-g
で開始して、時計を同期します。-g
は、ntpdが時計をany時間にステップできるようにする新しいオプションです-ntpd
のバージョンがそのfkagをサポートしていない場合は、=を開始する前にntpdate -b some.time.server
を実行します。 NTPデーモン
システムが非常に古く、これとはまったく異なることをしている場合は、おそらく非常に古くてサポートされていないので、起動スクリプトをより正気に変更することに何の不安もありません...
なぜntpdを使用しないのですか?
ntpdは、システムへのあらゆる種類のショックを回避するために更新を小さな変更にバッファリングするため、ntpdateよりもクロックが正しいことを確認するのにはるかに効率的です。
そしてそれ間違いなくあなたの時計を別の月に変更しません偶然!
システムにntpdをインストールして有効にする方法について、より正確な手順を説明しますが、ディストリビューションを指定していません。