NTPの使い方
RTCの有無とNTPDATE
NTPは大変高精度でネットワークが繋がっている限りRTCを必要としません。しかしRTCの電池が無くなっていたり、大きく狂っていると同期までに長い時間がかかることがあります。
NTPの仕組み
NTPは時計を徐々に合わせます。makeコマンドなど時計を使うものを一気に合わせると、その瞬間時計が戻ったように見え誤動作が考えられるからです。
時計合わせを切り替える
でも、時計を急いで合わせたい場合もあります。boot時にRTCが狂ってたり、RTCがない場合です。
NTPDATEを使う
ntpは時計を合わせる仕組みですが、Linuxにはもう一つ時計合わせがあります。ntpdateと言い、即時合わせたり、ずれを読み取る機能があります。
- -B slew(じわじわ近づける)モードで強制的に時刻を修正する
- -b step(いきなり合わせる)モードで強制的に時刻を修正する
- -d デバッグモード(時刻を修正しない)
- -q 日付と時刻の問い合わせのみ実行する(時刻を修正しない)
- -s コマンドの実行結果をsyslogに出力する
- -v 詳細情報を表示する
「-B」「-b」を指定しなかった場合、時刻のずれが500ミリ秒(0.5秒)より小さい場合はslewモードで徐々に時刻を調整し、それ以外の場合はstepモードですぐに時刻を合わせる。
# apt update
# apt install ntpdate
# cat /etc/network/if-up.d/ntpdate
/etc/init.d/ntp stop
ntpdate -b ntp.nict.jp
/etc/init.d/ntp start
# chmod +x /etc/network/if-up.d/ntpdate
ntpdateに"-b"を付けていますが、これで瞬時に時計が合います。
これでネットワークが起動した瞬間にntpを一瞬とめてntpdateで即時合わせ、ntpを再起動します。ntpとntpdateは同じポートを使うので、競合を避ける必要があります。