ntpdateを使った PCの時刻合わせ
sorry Japanese only
最終更新日 2004/08/14
page size = Mbyte

dateコマンドで時間を見てみたら、随分と時間がずれているのを発見。
せっかくだから、日本標準時を刻む原子時計に自動で同期させよう!
と言うことで ntpdateコマンドです。

まず installされていなかったので apt-getコマンドで installします。

[root]# apt-get install ntp
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了    
以下のパッケージが新たにインストールされます:
  ntp 
0 個のアップグレードパッケージ, 1 個の新規パッケージ, 0 個の削除/リプレースパッケージ, 33 個の保留パッケージがあります。
取得パッケージ: 1100kB のアーカイブを取得します。インストール後は 2051kB が使用されます。
取得:1 ftp://ftp.kddlabs.co.jp 2.6/i386/main ntp 4.1.1-0vl1 [1100kB]
取得完了: 1100kB を 6s (167kB/秒)                                              
RPM コマンドを実行しています (-U)...
ntp                         ##################################################

コマンドは用意できましたが、どこの time serverへ合わせるか?
検索エンジンにて調べた所、独立行政法人通信総合研究所が良いようです?
民間の大学、企業などへ向けてのアクセスは、タイムサーバーを善意で公開してくれている所へ負担をかけてしまいますから、 国の予算で運営している所を利用しましょう。

それと UNIX上で時間を表示するコマンドは dateコマンドですが、これ以外に clockコマンドというのがあるのを見付けました。
で、clockコマンドで表示させると、dateコマンドと随分ずれがあるのを見付けました。
[root]# date ; clock
2004年  8月 14日 土曜日 13:40:59 JST
2004年08月14日 13時45分25秒  -0.550232 秒

何がどう違うんだ?と思ったら、どうも clockコマンドは、マザーボードの RTCから時刻を取得しているような記述・・

[root]# clock -h
hwclock - ハードウェア時計 (RTC) への問い合わせや設定を行う

こっちも合わせなければダメだろ。ってことで、オプションは
--systohc ハードウェア時計を現在のシステム時刻に合わせる
を使うことにしました。

まずは、ntpdateコマンドと clockコマンドが正常に働くことを、コマンド入力して確認します。
(
[root]# date ; clock
2004年  8月 14日 土曜日 13:40:59 JST
2004年08月14日 13時45分25秒  -0.550232 秒   <-- BIOSの RTCが 5分進んでる

[root]# ntpdate ntp1.jst.mfeed.ad.jp ; clock --systohc ; date ; clock
14 Aug 15:01:20 ntpdate[22522]: adjust time server 210.173.160.27 offset -0.094917 sec
2004年  8月 14日 土曜日 15:01:20 JST
2004年08月14日 15時01分21秒  -0.859561 秒  <-- ぴったり合った

正常に動作するようなので、いつもの shスクリプトを作成します。

#!/bin/sh

# UNIXの時間をサーバーに合わせる。
# -s 結果は /var/log/messagesへ出力。
# ntp serverは http://www.jst.mfeed.ad.jp/network.htmlを使用。
#

/usr/sbin/ntpdate -s ntp1.jst.mfeed.ad.jp \
ntp2.jst.mfeed.ad.jp \
ntp3.jst.mfeed.ad.jp 


# マザーボードの時間を UNIX TIMEに合わせる。
#

/sbin/clock --systohc
~

/usr/bin/local/ntpdate.shという名前で保存しました。
chmod 755 ntpdate.shを行い、crontab -eで cronへ登録します。
そんなにずれないし ntpサーバーへ負荷をかけてもなんなんで、1日 1回更新することにしました。

[root]# crontab -l
52 5 * * * /usr/local/bin/ntpdate.sh
毎日 5時52分に実行するようにしました。

33713
戻る