サーバの時刻を合わせる

 WindowsXPには、パソコンの時間を定期的に合わせる機能がある。LinuxではNTPをインストールすれば、ntpdateというコマンドでインターネット上に公開されている任意のタイムサーバ(NTPサーバ)から時刻を取得し、時間を合わせることができる。

1.時間の合わせ方

 ntpdateコマンドを使い、任意のNTPサーバから時間を合わせるには、次のように行う。

# /usr/local/bin/ntpdate -b NTPサーバのホスト名又はIPアドレス

 例えばNTPサーバにclock.nc.fukuoka-u.ac.jpを指定する場合、次のようになる。

# /usr/local/bin/ntpdate -b clock.nc.fukuoka-u.ac.jp
23 Jan 17:47:19 ntpdate[10054]: step time server 133.100.9.2 offset -0.001386 sec

offsetの値が、指定したNTPサーバとの時間のずれ(秒単位)をあらわす。この例ではずれはほとんどないことが分かる。

2.ntpdateが利用できないとき

 ntpdateを実行したときにエラーが発生した場合、以下の3パターンが考えられる(指定したNTPサーバのアドレスは正しいものとする)。

  1. NTPがインストールされていない
  2. ntpdが起動済みである
  3. port123が空いていない

 このうち、2の場合は次のように対応する。

  1. ps axを実行し、ntpdを探す
  2. 見つかれば、killコマンドで殺す
  3. 再度、ntpdateコマンドを実行する

 ntpdについては別のページで解説する。

3.BIOSの時刻を取得した時刻にあわせる

実は、パソコンは2つの時計を持っている。OSが管理する時計と、BIOSが持つ時計である。ntpdateコマンドを用いて外部NTPサーバから時刻を取得し、正しい時刻にすることは可能だが、そのままではBIOSの時間は変わらない。
BIOSの時間をOSの時間に合わせるには、次のコマンドを発行する。

# clock -w

 ntpdateコマンドで時刻を取得したら、clockコマンドでBIOSの時間もあわせておくのが良いだろう。

4.時間合わせを自動で行う

cronを使えば、一定の間隔で時間合わせを行うことができる。方法は次の通り。

1.シェルスクリプトを作成する

 crontabで実行するシェルスクリプトを作成する(例、/root/ntp.sh)。

# vi /root/ntp.sh

 以下を入力し、保存。

/usr/local/bin/ntpdate -s clock.nc.fukuoka-u.ac.jp
/sbin/clock -w

 保存したら、実行権を付ける。

# chmod 755 /root/ntp.sh

2.cronの設定を行う

 crontabのエディタを起動する。

# crontab -e

 例えば毎日午前4時に/root/ntp.shを実行する場合、次のように入力して保存する。

0 4 * * * /root/ntp.sh > /dev/null 2>&1

[ TOP ]