NTPDATE(8)

名称
ntpdate - NTP を介して日付と時刻を設定する

書式
ntpdate [-bds] [-o version] [-a key#] [-e authdelay] [-k keyfile] [-p samples] [-t timeout] server ...

解説
ntpdate は、正確な時刻を決めるために引数に与えられたホスト (複数可) の ネットワークタイムプロトコル (Network Time Protocol) サーバを調べることによって、 ローカルな日付と時刻を設定します。 これは、ローカルホストの root として起動されなければなりません。 指定された各サーバからたくさんのサンプルを得て、 標準の NTP 時計フィルタと選択アルゴリズムを適用し、 その中から最良のものを選択します。 通常 ntpdate コマンドは、ブート時の時刻を設定するために起動時スクリプト /etc/rc.local の中に挿入したり、 cron(8) を介して時間毎に間欠的に走らせたりすることができます。 ntpdate の信頼性と正確さは、 サーバ数が増えると劇的に改善することを覚えておいてください。 単一のサーバを使っても構いませんが、 あまり多くないにしても、 少なくとも 3 つないし 4 つのサーバを用意すると、 より良い性能と、 どれかのサーバの部分的な狂いに対するより大きな抵抗性が得られます。

ntpdate は 2 つの方法のうちの 1 つで時刻の調整を行います。 ntpdate は、時計が 0.5 秒以上ずれていると判断すると、 settimeofday(2) を呼ぶことで単に時刻を合わせ直します。 しかし、 誤差が 0.5 秒以内のときは、デフォルトでは、そのずれを指定して adjtime(2) を呼ぶことで、時計の時刻を微調整します。 後者のテクニックは、ずれが小さいときには、より滑らかな上に正確であり、 ntpdate を cron(8) で 1 〜 2 時間に一回走らせるときには、かなりうまく働きます。 後者の方法で行う調整は、実際には、計測されたずれよりも 50% 大きくなります。 これは、ひどくフラフラする時計をより正確に保持するのに役立つからです (安定性は少し犠牲になりますが、この取り引きは大抵は有効です)。 しかしブート時には、大抵の場合、必ず合わせ直す方がいいでしょう。 コマンドラインに -b スイッチを指定することにより、すべての場合にこれを強制することができます。 -s スイッチは、 ntpdate の動作を標準出力ではなく、 syslog(3) 機能でログを取るようにします。 これはプログラムを cron(8) から走らせる際に便利なオプションです。

-d フラグは ntpdate が何を行うのかを、 実際に実行させずに知るために使われます。 一般のデバッグに便利な情報も出力されます。 デフォルトでは、 ntpdate は、パケットを出力するときに NTPバージョン 3 の実装であると自称します。 古いソフトウェアのいくつかはバージョン 3 の問い合わせへの返答を拒否するため、 代わりに -o version スイッチにより、 バージョン 2 または 1 の実装として調べるように強制できます。

ntpdate が各サーバから得るサンプルの数は、 -p スイッチを使って、 1 から 8 までを設定することができます。 デフォルトは 4 です。 応答待ちに使われる時間は -t スイッチで設定でき、 0.2 秒の倍数に丸められます。 デフォルトは 1 秒で、これは LAN を通じて調べるのに適当な値です。

必要なら ntpdate は、その処理を認証します。 -a スイッチは、すべてのパケットは指定されたキー番号を使って 認証されなければならないという指定です。 -k スイッチにより、デフォルトで /etc/ntp.keys となっている、キーを読み込むファイルの名前を変更できます。 このファイルは xntpd(8) に記載されているフォーマットで記述されなければなりません。 -e オプションは、認証処理による遅れを秒単位で指定できます (詳細は xntpd(8) を参照してください)。 この値は、通常は ntpdate の用途では無視し得るほどわずかですが、 非常に遅い CPU ではこの数を指定することで、 時間の正確さが改善するかもしれません。

ntpdate は、同一ホスト上に NTP サーバデーモン (例えば xntpd(8) ) が走っているときには、時刻の設定を拒否します。 デーモンを走らせる代わりに ntpdate を cron(8) から定期的に走らせるときは、 1 時間か 2 時間に 1 回動かせば、 時計の合わせ直しを避けて十分正確に時刻を刻むことになるでしょう。

関連ファイル
/etc/ntp.keys
    は ntpdate で使われる暗号キーを含みます。

関連項目
xntpd(8)

歴史
Toronto 大学の Dennis Ferguson によって書かれました。

バグ
時計の発振子の誤差を補正して精度を高めるために用いたテクニックは あまり出来がよくありませんが、 もっとうまくやるためには、 このプログラムが前回実行した時の状態を保存しておくことが必要となるでしょう。