CMOSクロックを正確に合わせる

D:20010421 免責事項

PCの時計はあまり正確ではないから、Timeserverを使ってきっちり と時計を合わせてみよう。

パッケージを探してインストールする

dateをキーワードにしてパッケージを検索してみる。
# grep-available -P date
Slackwareのときにも使っていたntpdateを今回も使うことにする。
# apt-get install ntpdate
インストール中につぎのメッセージが表示される。 cronを使う予定なので無視して続行する [1]
You must customize /etc/init.d/ntpdate before ntpdate can be run.
あらかじめmanページでオプションを確認してから、 ntpdateの動作確認をしてみる。
# /usr/sbin/ntpdate -sd 131.107.1.10
transmit(131.107.1.10)
receive(131.107.1.10)
transmit(131.107.1.10)
receive(131.107.1.10)
transmit(131.107.1.10)
receive(131.107.1.10)
transmit(131.107.1.10)
receive(131.107.1.10)
transmit(131.107.1.10)
server 131.107.1.10, port 123
stratum 1, precision -18, leap 00, trust 000
refid [ACTS], delay 0.16371, dispersion 0.00096
transmitted 4, in filter 4
reference time:    bfcd128e.32e33eff  Fri, Dec 21 2001 10:44:46.198
originate timestamp: bfcd1292.0cc154c9  Fri, Dec 21 2001 10:44:50.049
transmit timestamp:  bfcd1291.f6c5197a  Fri, Dec 21 2001 10:44:49.963
filter delay:  0.16373  0.16431  0.16371  0.16612 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.015176 0.016890 0.016813 0.015608
         0.000000 0.000000 0.000000 0.000000
delay 0.16371, dispersion 0.00096
offset 0.016813
TimeserverのIPアドレス(131.107.1.10)は、WindozのSakuraWatchで使ってい るTimeserverと合わせた。実行結果の見方は良く分からないが、 transmitとreceiveの組が合っていてtimestampやoffsetに値が入って いればいいのではないだろうか。

「offset」値が「+-128ms」以上の場合はローカルマシンの時計 を合わせてくれない。こんなときは、-Bオプ ションを使えば時刻を合わせることができる。

cronがなかった

動作確認もすんでcronで動かそうとしたら インストールされていなかった。ここで先にcronをインストールしておく。

インストールが済んだら自動実行用のスクリプト(setsystime)を 書いて、/usr/local/binへコピーして、実行許可を与えておく。

【シェルスクリプト(setsystime)】
#!/bin/bash
/usr/sbin/ntpdate -s 131.107.1.10

シェルスクリプトをcronに登録して、最後 に登録できたことをcrontab -lで確認しておく。

# crontab -e
33 * * * * /usr/local/bin/setsystime

Notes

[1]

追記:2002年7月。cronの使用を中止し てシステム起動時のみにスクリプト( /etc/init.d/ntpdate)で時刻合わせをする ことにする。スクリプトの編集結果は以下のとおり。

つぎの2行をコメントアウト
#echo "You must customize /etc/init.d/ntpdate before ntpdate can be run."
#exit 0
オプションの後にNTP serverのIPアドレスを追加
/usr/sbin/ntpdate -b -s 131.107.1.10 # space-delimited IP address list goes he
re!