W(1)

名称
w - 誰がログインし、何をしているかを表示する

書式
w [-hin] [-M core] [-N system] [user]

解説
w は、システムの現在の動作状況や、ユーザが何をしているかを表示します。 最初の行は現在時刻、システムの稼働時間、ログインしているユーザ数、 システムの負荷を表示します (uptime(1) と同じ情報)。 システムの負荷は、1分、5分、15分前の実行キューの平均の長さです。

出力項目は、ユーザのログイン名とユーザが現在いる端末の名前、 ユーザがログインしてきたホスト、ユーザがログイン している時間、 ユーザが最後にコマンドを入力してからの経過時間、 現在実行しているコマンドの名前と引数です。

オプション:

-h  最初の行 (uptime(1) の情報) を表示しません。

-i  アイドル時間の順にソートして表示します。

-M core
    デフォルトの “/dev/kmem” のかわりに、指定された core か ら名前のリストに関係する値を取り出します。

-N system
    デフォルトの “/netbsd” のかわりに、指定された system から 名前のリストを取り出します。

-n  ホスト名を数値として、ネットワークアドレスで表示します (通常は、アドレスを解釈してホスト名で表示しようとします)。

ユーザ名が指定されると、指定されたユーザのものだけ出力を行います。

関連ファイル
/var/run/utmp
    システム上のユーザのリスト
/netbsd
    名前のリストを取り出すデフォルト
/dev/kmem
    名前のリストから値を取り出すデフォルト

バグ
“現在実行しているプロセス” を見つける方法はかなりいい加減なものです。 現在は、``割り込みを無視していない端末の、もっともプロセス ID の大きい プロセスか、それが見つからなければ、その端末のもっともプロセス ID の大きい プロセスを見つける'' というアルゴリズムです。 これが失敗する場合があります。たとえば、シェルやエディタのようなプログラムが クリティカルセクション (ほかからの割り込みを受け付けるべきではないような 重要な操作をする状態) にいる場合や、不完全なプログラムがバックグラウンドで 動いているにもかかわらず、割り込みを無視するのに失敗しているような場合です (プロセスを見つけることができなかった場合、 w は “-” を表示します)。

CPU 時間は推定でしかありません。特に誰かがバックグラウンドで プロセスを動かしたままログアウトして立ち去ると、その端末を使った人は、 バックグランドで動いているプロセスの時間を “課金” されます (もちろん実際に、お金をとられるわけではありませんが)。

バックグラウンドプロセスは、その負荷が非常に大きいものではないかぎり 現れません。

いくつかのプロセス (バックグラウンドプロセスなどの場合が多いですが) は、 引数を持たないか、ゴミの引数がついています。これらの場合、 コマンドの名前は丸括弧でくくられて表示されます。

w はバックグラウンドジョブを発見する新しい法則を知りません。 そのため、正しいもののかわりに、バックグラウンドジョブを見つけて しまうことがあります。

互換性
-f, -l, -s, -w オプションはサポートされなくなりました。

歴史
w は UNIX 3.0 に登場します。