.\" this file based on that translated to japanese on NetBSD Japanese Reference .\" Manual Project, and modified to fit FreeBSD Reference Manual .\" by Mochida Shuji 1995/03/31 .\" .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" from: @(#)rwhod.8 8.2 (Berkeley) 12/11/93 .\" %FreeBSD: src/usr.sbin/rwhod/rwhod.8,v 1.21 2004/08/07 04:28:54 imp Exp % .\" .\" $FreeBSD$ .\" .Dd December 11, 1993 .Dt RWHOD 8 .Os .Sh 名称 .Nm rwhod .Nd システムステータスサーバ .Sh 書式 .Nm .Op Fl i .Op Fl p .Op Fl l .Op Fl m Op Ar ttl .Sh 解説 .Nm ユーティリティは、 .Xr rwho 1 や .Xr ruptime 1 プログラムで使われるデータベースを管理するサーバです。 ネットワークにおいて .Em ブロードキャスト もしくは .Em マルチキャスト メッセージが使用できることが前提となります。 .Pp .Nm ユーティリティはステータス情報の生成と利用の両方を行います。 ただし、 .Fl l (listen モード) オプションを指定した場合は例外で、利用のみ行います。 情報の生成では、定期的に システムに状態を問い合わせ、ステータスメッセージを構築してネットワークに ブロードキャストします。情報の利用では、他の .Nm サーバからの状態メッセージを受け取り、検査してから、 .Pa /var/rwho ディレクトリの下のファイルに記録します。 .Pp 次のオプションが使用可能です: .Bl -tag -width indent .It Fl i オプションは、安全ではないモードを有効にします。 このモードでは、 .Nm は入力パケットのソースポートを無視します。 .It Fl p すべての .Dv POINTOPOINT インタフェースを無視させます。 要求時にダイヤルするインタフェースを常に活動状態にしたくない場合に有用です。 .It Fl l listen モードが有効になり、 .Nm は情報をブロードキャストしなくなります。 これにより、自分自身の情報をブロードキャストせずに他のマシンの .Nm 情報を監視することができます。 .It Fl m Op Ar ttl インタフェースの "ifnet" 構造体に IFF_MULTICAST フラグが 設定されている全てのインタフェース (ループバックインタフェースは 除きます) 上で、 .Nm に (ブロードキャストの代わりに) IP マルチキャストを使わせます。 マルチキャストによる報告は、 直接つながっているサブネットへの転送を防ぐために TTL(Time To Live) 1で送られます。 .Pp オプションの .Ar ttl 引数が .Fl m フラグとともに与えられた時には、 .Nm は IP マルチキャストデータグラムを TTL が .Ar ttl として、 全てのインタフェースではなく 1 つのインタフェースに対して送ります。 .Ar ttl は 0 から 32 (または、MAX_MULTICAST_SCOPE) までの値です。 .Fl m Ar 1 は、 .Fl m とは異なることに注意してください。 .Fl m Ar 1 は、1 つのインタフェースにだけ転送を行います。 .Pp .Fl m フラグが、 .Ar ttl 引数無しで使われた場合、プログラムはマルチキャスト .Nm 報告を全ての マルチキャストが利用可能なインタフェースから受け取ります。 .Ar ttl 引数が与えられた場合は、マルチキャストレポートは 1 つのインタフェース からだけ受け取ります。その 1 つは、報告を行っているものです (これは、ホストルーティング表によって制御されます)。 .Fl m オプションに関係なく、プログラムはブロードキャストもしくは ユニキャストによる報告を全てのインタフェースから受け取ります。 したがって、このプログラムは、マルチキャストを使っていない古い .Nm から報告を受け取りますが、マルチキャストが使われている場合には古い .Nm は このプログラムによって生成される報告を受け取れないことになります。 .El .Pp サーバは、``who'' サービスで指定されているポート番号でメッセージを 送受信します。 .Xr services 5 を参照して下さい。送受信するメッセージは以下のような形式です。 .Bd -literal -offset indent struct outmp { char out_line[8]; /* 端末 (tty) 名 */ char out_name[8]; /* ユーザID */ long out_time; /* 時刻 */ }; struct whod { char wd_vers; char wd_type; char wd_fill[2]; int wd_sendtime; int wd_recvtime; char wd_hostname[32]; int wd_loadav[3]; int wd_boottime; struct whoent { struct outmp we_utmp; int we_idle; } wd_we[1024 / sizeof (struct whoent)]; }; .Ed .Pp すべてのフィールドは、送信に先立ってネットワークバイトオーダに変換されます。 ホスト負荷 (load average) は .Xr w 1 によって計算され、送信の 5, 10, 15 分前の負荷を 100 倍した 整数として表現されます。 ホスト名は、 .Xr gethostname 3 システムコールで得られたものがドメイン名を省略して格納されます。 メッセージの最後の配列には、メッセージを送信したマシンにログインしている ユーザの情報が格納されています。 この情報は、 .Xr utmp 5 の非アイドルの端末ラインのエントリと、その端末ラインから最後に文字を 受け取った時間を秒数で表した値が入っています。 .Pp .Nm サーバによって受信されるメッセージは、 .Nm サーバのポートから送信されたものでないか、 .Fl i オプションが指定されていなければ捨てられます。 さらにメッセージのホストの名前が表示できない .Tn ASCII 文字を含んでいる場合も、メッセージは捨てられます。 .Nm が受け取った正しいメッセージは .Pa /var/rwho ディレクトリに .Pa whod.hostname というファイル名で格納されます。 これらのファイルには、最新のメッセージだけが、 上で説明した形式で残っています。 .Pp ステータスメッセージはほぼ 3 分ごとに作成されます。 .Nm ユーティリティは、30 分ごとに .Pa /boot/kernel/kernel に対して .Xr nlist 3 を実行します。これは、このファイルがその時点での実際のシステムイメージ であることを確認するためです。 .Sh 関連項目 .Xr ruptime 1 , .Xr rwho 1 .Sh バグ ネットワーク間でステータス情報を中継する方法が必要です。 ステータス情報は、ずっと送りつづけるのではなく、 要求があったときにだけ送るようにするべきでしょう。 サーバが死んでいたり、ネットワークの通信障害を、 マシンがダウンしていると思い込んでしまう場合がよくあります。 .Sh 歴史 .Nm ユーティリティは .Bx 4.2 で登場しました。