rwhod —
システムステータスサーバ
rwhod
[
-bpa]
[
-u
user]
rwhod は、
rwho(1) と
ruptime(1)
プログラムで使用されるデータベースを管理するサーバである。
このサーバの運用は、ネットワーク上で
ブロードキャスト
メッセージが使用できることを前提としている。
rwhod
は、ステータス情報の作成側としても、利用側としても動作する。
情報の作成側としては、システム状態を定期的に問い合わせ、
ネットワークにブロードキャストされるステータスメッセージを作成する。
情報の利用側としては、他の
rwhod
サーバのステータスメッセージを受け取り、確認した後、
/var/spool/rwho
ディレクトリに作られたファイルに記録する。
サーバは、``rwho''
サービスの指定で指示されているポートを使って
メッセージの送受信を行う。
services(5)
を参照すること。
-b
フラグが指定された場合、
イーサネットのようなブロードキャストインターフェースのみが使われる。
-p
フラグが指定された場合、
point-to-point
のインターフェースのみが使われる。
-a
フラグが指定された場合、またはフラグが何も指定されない場合、
全てのインターフェースが使われる。
-u
フラグが指定された場合、
rwhod は root
ではなく指定されたユーザーとして実行される。
送受信されるメッセージは以下の形式である。
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)];
};
全てのフィールドは、送信の前にネットワークバイトオーダーに変換される。
平均負荷は
w(1)
プログラムによって計算され、
サーバが送信する前の
5, 10, 15
分間隔の平均負荷を表す。
平均負荷は 100
を掛けて整数で表される。
使用されるホスト名は、
gethostname(2)
システムコールによって返されたもので、ドメイン名は省略される。
メッセージの最後の配列には、メッセージを送信したマシンにログインしている
ユーザーの情報が含まれている。
この情報には、アイドルでない端末ラインの
utmp(5)
エントリと端末ラインから最後に文字が受信されてからの秒数が入っている。
rwho
サーバに受信されるメッセージは、
rwho
サーバのポートから送信されたものでなければ、破棄される。
さらに、メッセージ中で指定されたホスト名が表示できない
ASCII
文字を含んでいる場合も、メッセージは破棄される。
rwhod
に受信された有効なメッセージは、ディレクトリ
/var/spool/rwho にある
whod.hostname
というファイルに入れられる。
これらのファイルには、
最新のメッセージのみが上で説明したフォーマットで格納されている。
ステータスメッセージは、約
3 分に 1 回作成される。
rwhod
はシステムのブート時刻を
30 分毎に再計算する。
なぜなら、(Linux 以外の)
システムの中には、
ブート時刻の計算が完全に信用のおけるプロセスではない
システムも存在するためである。
rwho(1),
ruptime(1)
ネットワーク間でステータス情報を中継する方法が必要である。
サーバが死んでいる場合やネットワーク通信が失敗している場合に、
マシンがダウンしていると解釈してしまうことがある。
rwhod コマンドは
4.2BSD
で登場した。