Clock adjust

提供: j8takagi wiki
移動先: 案内検索

Linuxサーバーを構築しようとしたら、時計が大幅にずれてしまいました。 そのときの対処方法。

時計のズレを計測する

時計のズレは、ntpdateコマンドで計測できます。

$ ntpdate -q ntp.nict.jp
server 2001:df0:232:eea0::fff3, stratum 0, offset 0.000000, delay 0.00000
server 133.243.238.163, stratum 1, offset -0.001282, delay 0.03157
server 133.243.238.164, stratum 1, offset -0.001266, delay 0.03145
server 133.243.238.243, stratum 1, offset -0.001185, delay 0.03104
server 133.243.238.244, stratum 1, offset -0.001343, delay 0.03085
29 May 11:12:53 ntpdate[13191]: adjust time server 133.243.238.244 offset -0.001343 sec

たびたび計るので、次のスクリプトをchk_clock.shファイルとして作成。10秒ごとに時刻を計測する。

#!/bin/sh
#
# ntpdateでNTPサーバーへ問い合わせ、システム時計のズレをチェックする
# 引数1で指定された回数チェック。指定がないときは6回

NTPDATE=ntpdate
SED=sed

# 問い合わせ回数の初期値
D=6;

# 問い合わせの間隔。秒単位
INT=10;

# NTPサーバー
SERVER=ntp.nict.jp

if test -z $1; then
    N=$D
else
    N=$1
fi
for i in $(seq 1 $N); do
    if test $i -gt 1; then
        sleep ${INT}
    fi
    ${NTPDATE} -q -4 ${SERVER}  | ${SED} -n -e "/adjust time server/s/.*offset //p"
done

次のように実行

$ sh chk_clock.sh 
0.005631 sec
0.005591 sec
0.005756 sec
0.005960 sec
0.006102 sec
0.005711 sec

NTPの設定

ズレが小さいときは、NTPで時刻調整すればよい。

$ ntpdate ntp.nict.jp

自動で定期的に時刻調整するには、cronを使う。

$ sudo crontab -e

1時間に1回時刻調整するには、次の行を追加。

0 * * * * /usr/sbin/ntpdate ntp.nict.jp | /usr/bin/logger -p cron.info

adjtimexの設定

ズレが大きいときは、adjtimexの設定も必要。

$ sudo apt-get install adjtimex

/etc/default/adjtimex ファイルのTICKとFREQの値を調整。詳細は、[1]参照。


TICK=10028
FREQ=5242880