NTPDATE(8)

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

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

解説
注意: このプログラムの機能は、今では ntpd(8) プログラムの中で利用可能となっています。 ntpd(8) マニュアルページの -q コマンドラインオプションの説明を参照して下さい。 適切な期間、喪に服した後で、 ntpdate プログラムは本ディストリビューションから引退することになります。

ntpdate は、正確な時刻を決めるために server 引数で与えられた ネットワークタイムプロトコル (Network Time Protocol; NTP) サーバ (複数可) を調べることによって、 ローカルな日付と時刻を設定します。 このコマンドは、ローカルホストの root として起動されなければなりません。 指定された各サーバからたくさんのサンプルを得て、 NTP 時計フィルタのサブセットと選択アルゴリズムを適用し、 その中から最良のものを選択します。 ntpdate の正確さと信頼性は サーバの数、一実行あたりの調査数、そして実行間隔で決まることに 注意してください。

以下のオプションが使用可能です:

-a key
    認証機能を有効にし、認証の鍵識別子を key 引数に指定します。 鍵と鍵の識別子はクライアントとサーバ双方の鍵ファイルで 合致する必要があります。 デフォルトでは認証機能は無効になっています。

-B  計測されたオフセットが± 128 ms より大きくても、 時刻を常に adjtime(2) システムコールを用いて微調整するよう、強制します。 デフォルトではオフセットが± 128 ms より大きい場合は、 settimeofday(2) を用いてずらします。 オフセットが± 128 ms より大きい場合は、 時計を正しい値に微調整で合わせるのに長い時間 (数時間) 掛かることがあることに 注意してください。 この間は、クライアントを同期するためにこのホストを使ってはいけません。

-b  (デフォルトの) adjtime(2) システムコールを用いて時刻を微調整するのではなく、 settimeofday(2) システムコールを用いて時刻を合わせるよう、強制します。 このオプションはブート時に起動ファイルから呼び出すときには使用するべきです。

-d  デバッグモードを有効にします。 ntpdate は全てのステップを実行しますが、ローカル時計を合わせることはしません。 一般的なデバッグに役立つ情報も表示します。

-e authdelay
    認証機能の処理にかかる遅れを authdelay に値を秒数 (小数も可) で指定します (詳細は ntpd(8) を参照してください)。 この値は通常多くの用途では無視し得るほどわずかですが、 非常に遅い CPU ではこの数を指定することで、 時間の正確さが改善されるかもしれません。

-k keyfile
    認証鍵のファイルへのパスを文字列で keyfile に指定します。 デフォルトは /etc/ntp.keys です。 このファイルは ntpd(8) に記述されている形式で書く必要があります。

-o version
    外へ出すパケットの NTP バージョンを version に 1 か 2 の整数で指定します。 デフォルトは 3 です。 このオプションは ntpdate を古いバージョンの NTP に対して使用できるようにします。

-p samples
    各サーバから得るサンプルの数を samples に 1 から 8 までの整数で指定します。 デフォルトは 4 です。

-q  問い合わせをするだけで、時計を設定しません。

-s  (デフォルトの) 標準出力ではなく、 syslog(3) 機能を使用してログ出力を行ないます。 この機能は主に cron(8) スクリプトでの利便性を考えて作られました。

-t timeout
    サーバの応答を待つ最大時間を timeout に秒数 (小数も可) で指定します。 値は 0.2 秒の倍数に丸められます。 デフォルトは 1 秒で、これは LAN を通じて調べるのに適当な値です。

-u  ntpdate が外へ出すパケットを非特権ポートから出すように命令します。 この機能は、外から来た特権ポートへのトラフィックを ブロックする防火壁の内側にいる場合に、防火壁を越えた向こうのホストと同期する際に 最も便利です。 -d オプションは常に非特権ポートを使用することに注意してください。

-v  冗長になります。 このオプションは ntpdate のバージョン識別文字列を記録するようになります。

ntpdate コマンドは、必要に応じてホストの時計を合わせるために手動で動かしたり、 ブート時に時計を設定するために起動スクリプト の中から動かすことができます。 このことは NTP デーモン ntpd(8) を起動する前に時計を初期設定する場合に便利です。 ntpdate は cron(8) スクリプトから起動することも可能です。 しかし、 ntpdate を用いた cron(8) スクリプトを工夫しても、 最小限のリソース消費で最大の正確さと信頼性を得る 洗練されたアルゴリズムを用いる NTP デーモンの代わりにはならないことに 注意することが重要です。 最後に、 ntpdate は ntpd(8) がするようなホストのクロック周波数の学習をしないので、 ntpdate を用いることによる正確さは限定されます。

ntpdate は 2 つの方法のうちの 1 つで時刻の調整を行います。 ntpdate は、時計が 0.5 秒以上ずれていると判断すると、システムの settimeofday(2) ルーチンを呼ぶことで単に時刻を合わせ直します。 しかし、 誤差が 0.5 秒以内のときは、システムの adjtime(2) ルーチンを呼ぶことで、時刻を微調整します。 後者のテクニックは、誤差が小さいときには、より滑らかな上に正確であり、 ntpdate を cron(8) で 1 〜 2 時間に一回動かすときには、かなりうまく働きます。

ntpdate は同じホストで NTP サーバデーモン (例えば ntpd(8)) が動いている場合は、日付の設定を拒否します。 デーモンを実行する代わりに cron(8) から定期的に ntpdate を呼び出す場合は、 1 〜 2 時間に一回行なうと時計のずれを抑止するのに十分な 正確な時刻を保持できます。

ntpdate が NetInfo サポートを含む形でコンパイルされていた場合、 ntpdate が ntpd(8) 用の NetInfo の設定から時刻サーバを見つけられる場合は server 引数はオプションとなります。

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

関連項目
ntpd(8)

バグ
微調整による調整は、実際には、計測されたずれよりも 50% 大きくなります。 これは、ひどくフラフラする時計をより正確に保持するのに役立つからです (と主張されています)。 このことは良い考えではないかもしれず、カーネル変数 kern.clockrate.tick と kern.clockrate.tickadj の値をおかしくするかもしれません。