NTPQ(8) — NEWS-OS Programmer’s Manual
名称
ntpq − 標準ネットワークタイムプロトコル照会プログラム
形式
ntpq [ −inp ] [ −c command ] [ host ] [ ... ]
解説
ntpq は、推奨されている NTP モード 6 の制御メッセージ形式を 実現する NTP サーバに、 現在の状態を照会し、 その状態に変更を要求する際の、使用します。 プログラムは、 対話形式モードでも、 コマンド行引数を使って制御されている状態でも実行ができます。 任意の変数の読み出し、書き込みの要求をアセンブルすることができ、 この時、未処理で正式に出力されている出力オプションを使用できます。 ntpq は、また、サーバに複数の照会を送ることで、 共通形式内のピアのリストを得て、 出力することもできます。
ntpq が実行されている時、 単一または複数の要求オプションがコマンド行上にあれば、 各要求は、 コマンド行引数として与えられた各ホスト、あるいは デフォルトによる localhost で動作している NTP サーバに送られることになります。 要求オプションが与えられていない場合は、 ntpq は標準出力からコマンドを読もうとし、コマンド行に 与えられている最初のホストで動作している NTP サーバ上でこれらを実行します。ホストが他に実行 されていなければ、再びデフォルトとして localhost をとります。 ntpq は、標準入力が端末装置の場合、 コマンドを促すことになります。
NTP サーバと通信するために、 ntpq は、NTP モード 6 パケットを使用します。 ですから、通信が可能なネットワーク上の、 互換性のあるサーバのどれかに照会するときに使用できます。 NTP は UDP プロトコルなので、 この通信は、特にネットワーク位相幾何学的に距離が長いときは、 いくらか信頼性に欠けます。 ntpq は、要求を再伝送しようとしますが、 リモートホストが適当なタイムアウト時間内に応答しなければ、 要求をタイムアウトとします。
コマンド行オプションは以下に解説されています。 −i または、 −n 以外のコマンド行オプションを指定すると、 指定された照会 (複数可) は、 指示されたホスト (複数可) にすぐに送られることになります。 でなければ、 ntpq は、標準入力から 対話形式のコマンドを読もうと試みることになります。
−c以下の引数は対話形式のコマンドとして解釈され、 指定されたホスト (複数可) で実行されるコマンドのリストに 加えられます。 複数の −c オプションを与えることができます。
−intpq を対話形式モードで強制的に動作させます。 プロンプトは標準出力に書き込まれ、 コマンドは標準入力から読み出されます。
−n正準ホスト名に変換せずに、ドットで間を詰めた 数字の形式でホストアドレスの全てを出力します。
−pその状態の要約は勿論、 サーバが認知しているピアのリストを出力します。 これは、“ピア” 対話形式コマンドに相当します。
内部コマンド
対話形式のコマンドは、 0 から 4 つの引数が後に続くキーワードで成立しています。 コマンドを一意に識別するには、 1 つのキーワード全体の中から識別に足る文字をタイプすれば済みます。 通常、コマンドの出力は標準出力に送られますが、 個々のコマンドの出力を任意に、コマンド行へ、 後にファイル名を続けた “>” を付加することで ファイルに送ることも出来ます。
相当数の対話形式のコマンドは、独自に ntpq プログラム内で完全に実行され、 NTP モード 6 の要求をサーバに送りません。 これらは以下で解説されています。
? [ command_keyword }
“?” は、独自に、 ntpq の具現化したものが認知している、 全てのコマンドキーワードのリストを出力します。 “?” は、 コマンドキーワードが後に続き、 コマンドの機能や使用情報を出力します。 ntpq については、 おそらくこのマニュアルのページよりも、 このコマンドの方が情報としては役立つものでしょう。
timeout millseconds
サーバの照会に対する、応答のタイムアウト時間を指定します。 デフォルトは、約 5000 ミリ秒です。 ntpq は、タイムアウトの後、一度照会を再試行しますので、 タイムアウトまでの待ち時間は合計で、 設定されたタイムアウト値の 2 倍となります。
delay milliseconds
鑑定を必要とする要求のタイムスタンプに加える時間間隔を指定します。 これを使用すると、遅延の大きいネットワーク経路にわたっている、 またはクロックが同期化されていない装置間の、 (信頼性に欠ける) サーバの再構成が可能になります。 実際には現在、サーバは鑑定済みのリクエストに タイムスタンプを要求しません。 ですから、このコマンドは一般的にはもう使用されていません。
host hostname
将来、照会が送られるホストを設定します。 hostname は、ホスト名でも数字のアドレスても結構です。
poll [ # ] [ verbose ]
クライアントモードで、現在のサーバをポーリングします。 最初の引数は、ポーリングする回数です (デフォルトは 1 です)。 また、より詳細な結果の出力を得るために、 2 番目の引数を与えることもできます。 ただし、このコマンドは、現在はまだ希望的な観測でしかありません。
keyid #
このコマンドは、キー番号の仕様を構成要求の鑑定に使えるようにします。 これは、この目的で使用するためには、 サーバが構成したキー番号に対応したものでなくてはなりません。
passwd
このコマンドは、ユーザに、 構成要求を鑑定するのに使うパスワード (エコーはされません) で タイプするよう促すものです。 こうした要求を成功させるためには、パスワードは、 この目的で NTP サーバの使用ために構成されたキーに対応 するものでなくてなりません。
hostnames yes│no
“yes” が指定された場合、 ホスト名が情報表示に出力されます。 “no” が与えられれば、 代わりに数字のアドレスが出力されます。 コマンド行 −n スイッチを使っての変更がされていない限り、 デフォルトは “yes” です。
raw
照会コマンドからの出力は全て、 受け付けられた時のままで、 リモートサーバから出力されます。 データ上で行われるフォーマット/解釈だけは、 非アスキーデータを出力可能な (ただし、ほとんど理解不能) な形に変えます。
cooked
照会コマンドからの出力を “cooked” にします。 サーバが認知している変数は、ユーザの利用のために値を 再フォーマットされます。 ntpq が取る変数は、 デコード可能な値でなければなりませんが、 そうでない場合、最後に “?” が示されます。
ntpversion 1│2
ntpq がパケット内で要求する NTP のバージョンナンバーを設定します。 モード 6 の制御メッセージは、(付け加えれば、複数のモードでも) NTP バージョン 1 には存在していませんから、 デフォルトとして 2 を取ります。 バージョン 1 を要求するサーバはもう残っていないようです。
authenticate yes│no
ntpq は通常、書き込み要求でない限りは、 要求を鑑定することはありません。 コマンド authenticate yes で、 ntpq は、出された要求全て鑑定し、送ることになります。 鑑定された要求によって、 サーバのいくつかは要求をわずかに異なった扱い方をすることになります。 また、ピア表示をする前に鑑定を行えば、 CPU はときおりファズボールのなかに溶けて無くなってしまうことが あります。
addvars <variable_name>[=<value>][,...] rmvars <variable_name>[,...] clearvars
NTP モード 6 メッセージが持ってくるデータは、 形式、
<variable_name>=<value>
の項目リストで成り立っています。ここでは、 “=<value>” は無視され、変数を読むように サーバに要求があれば、省略することもできます。 ntpq は、内部リストを維持しますが、このリストでは 制御メッセージに含まれるべきデータをアセンブル し、また、そのデータを以下に解説されている readlist と writelist コマンドを使って、 このリストに送ることができます。 addvars コマンドは、変数とその任意の値をリストに 加えることができるようにします。 複数の変数が加えられる場合には、リストをカンマで分け、 空白スペースがないようにしなければなりません。 rmvars コマンドは、 リストから個々の変数を取除く際に使用でき、また clearlist コマンドはリストから全ての変数を取り除きます。
debug more │ less │ off
内部の照会プログラムのデバッギングをオンまたは オフにします。
quit
ntpq を終了します。
制御メッセージコマンド
NTP サーバが認知している各ピアは、それに 代入された 16 ビットの整数、 association identifier を持っています。 ピア識別子を運ぶ NTP 制御メッセージは、 値が対応するピアを、その結合 ID を入れることで識別 しなければなりません。 0 の結合 ID は特殊なもので、 変数がシステム変数で、名称がスペースで 分けられた名称から作られることを示します。
制御メッセージコマンドは、 サーバに送られる 1 つ以上の NTP モード 6 メッセージを 発生させることになり、 応答データはいくつかの形式で出力されます。 現在、実現されてるほとんどのコマンドは、 単一のデータを送り単一の応答を待つものです。 現在の例外には、まず peers コマンドがあり、これは必要とするデータを得るために、 プログラム済みの一連のメッセージを送ります。また、 mreadlist と mreadvar コマンドの方は、結合域を反復します。
associations
結合識別子のリストとピアの状態を得て、出力します。 ピアの状態は、照会されているサーバの仕様内のピアのためのものです。 リストはカラムで出力されます。 これらの頭は、 結合に 1 から番号をふった、内部で使用するための索引です。 2 番目はサーバが返した実際の結合識別子、 3 番目はピアの状態ワードです。 これは、状態ワードからデコードされたデータをもった 相当数のカラムが後に続きます。 “associations” コマンドが返したデータは、 ntpq の内部で保持されます。 索引はその後、 ユーザにタイプしにくい結合識別子を使う 鈍いサーバを扱う際に役立ちます。 このとき引数として結合識別子を必要とする連続したコマンドには、 形式 &index を代わりに使うこともできます。
lassocations
結合識別子のリストとピアの状態を得て、出力します。 ピアの状態は、サーバが状態を維持している 全ての結合のためのものです。 このコマンドは、 仕様外のクライアント結合 (例 ファズボール) の状態を 維持するサーバに関してだけは、 “associations” コマンドとは異なります。 このような結合は、通常 “associations” コマンドが使用されている ときには表示から外されますが、 “lassociations” の出力には含まれます。
passociations
内部に保持されている結合のリストから、 仕様内のピアに関した結合データを出力します。 このコマンドは、新しい照会はせずに内部に格納され ているデータを表示する以外は、 “associations” と同じように動作します。
lpassociations
規格外のクライアント結合も含めて、 内部に保持された結合リストから、 鑑定全てのためのデータを出力します。 このコマンドは、ファズボールを扱う場合のみ、 “passociations” とは異なります。
pstatus assocID
読み出し状態要求を、与えられた結合のためにサーバに送ります。 返されたピア変数名と値が、出力されます。 ヘッダからの状態ワードは、変数に先行して、 16 進数とピジン (混成) 英語の両方で表示されることに注意して下さい。
readvar [ assocID ] [ <variable_name>[=<value>][,...] ]
読み出し変数要求を送ることによって、 サーバが返した、指定変数の値を要求します。 結合 ID が省略されていたり、 ゼロを与えられている場合、 変数はシステム変数となり、 そうでなければピア変数となって、 返り値は対応するピアの値となります。 変数リストを省略すると、デフォルト表示を返却するように サーバに指示するデータを持たない要求が送られます。
rv [ assocID ] [ <variable_name>[=<value>][,...] ]
readvar コマンドのタイプしやすい省略形。
writevar assocID <variable_name>=<value>[,...]
指定された変数が読み出されず 書き込まれる以外は、 readvar 要求と同じです。
readlist [ assocID ]
サーバが返却した内部の変数リストの中の、変数の値を要求します。 結合 ID が省略されたり、0 の場合、 変数はシステム変数を仮定されます。 そうでなければ、ピア変数として扱われます。 内部の変数リストが空の場合、デフォルト表示を返却するように リモートサーバに指示するデータを持たない要求が送られます。
rl [ assocID ]
readlist コマンドのタイプしやすい省略形。
writelist [ assocID ]
内部リストの変数が読み出されず書き込まれる以外は、 readlist 要求と同じです。
mreadvar assocID assocID [ <variable_name>[=<value>][,...] ]
照会が各 (非ゼロ) 結合 ID 域の範囲に対して行われる以外は、 readvar コマンドと同じです。 この範囲は、最も新しい associations コマンドで保持されている結合リストから決定されます。
mrv assocID assocID [ <variable_name>[=<value>][,...] ]
mreadvar コマンドのタイプしやすい省略形。
mreadlist assocID assocID
照会が各 (非ゼロ) 結合 ID の範囲に対して行われる以外は、 readlist コマンドと同じです。 この範囲は、最も新しい associations コマンドで保持されている結合リストから決定されます。
mrl assocID assocID
mreadlist コマンドのタイプしやすい省略形。
clockvar [ assocID ] [ <variable_name>[=<value>][,...] ]
サーバのクロック変数リストを送るように要求します。 ラジオクロックを持った、または、 外部と同期を持った他のサーバが、 積極的にこれに応答します。 結合識別子が省略されたり、ゼロであったりすると、 要求は “システムクロック” の変数へ向けられ、 クロックを持った全てのサーバから、広く積極的に応答を受け付けます。 サーバがクロックを 疑似ピア として扱えば、 一度に複数のクロックを接続させることも可能でしょう。 この場合、適当なピア結合 ID を参照すれば、 特有のクロックの変数が示されます。 変数リストを省略すると、サーバはデフォルト 変数表示を返却します。
cv [ assocID ] [ <variable_name>[=<value>][,...] ]
clockvar
コマンドのタイプしやすい省略形。
peers
各ピアの状態の要約に加えて、サーバの仕様内のピアのリストを得ます。 要約情報には、リモートピアのアドレス、 参照 ID (参照 ID が未知のものなら、0.0.0.0)、 リモートピアの層、秒単位でのポーリング間隔、 8 進で到達可能性のレジスタ、 そして現時点で全て秒単位で見積もられている、 遅延、オフセット、ピアの分布を含んでいます。 加えて、左マージン内の文字は、 クロック選択アルゴリズムでのこのピアの行き先も示します。 文字は、 クロック選択アルゴリズムの最後の段階に含まれていた ピアのそばに表示されるのみです。 “.” は、 当該ピアが異常のあるクロックの検索で放棄されたことを示し、また “+” は、ピアが検索を無事通ったことを示します。 “∗” は、現在サーバが、同期化しているピアを示します。 peers コマンドは受け入れた応答 での値を解析できるかどうか次第なので、 データ形式を完全に制御できないサーバでは、 動作に失敗することがあることに注意して下さい。
lpeers
サーバが状態を維持している全ての結合の要約以外は、 peers と同じように出力されます。 これは、更に長いピアのリストをファズボールサーバから作成できます。
opeers
ローカルインターフェースアドレスに置き換えられた 参照 ID を持つ “peers” コマンドの古い形式。
歴史
トロント大学 デニス ファーガスン著
バグ
peers コマンドは、非アトミックなので、 無効の結合に関して偽のエラーメッセージを発生させ、 コマンドを終了させてしまうことがあります。
タイムアウト時間は固定定数で、 これは最悪のケースを仮定していますので、 ユーザはタイムアウトまで、長い間待たなければなりません。 プログラムが固有のホストに照会を送っているので、 タイムアウトの見積もりも改善すべきなのですが、まだしていません。
NEWS-OSRelease 4.2.1R