W(1)

名称
w - ログインしているユーザと、その作業内容を表示する

書式
w [-dhin] [-M core] [-N system] [user ...]

解説
w は、システムの現在の動作状況や、ユーザの作業内容を表示します。 最初の行は現在時刻、システムの稼働時間、ログインしているユーザ数、 システムの平均負荷を表示します。 平均負荷は、最近の 1 分、5 分、15 分間における実行キュー内の ジョブ数の平均値を表します。

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

オプションは以下の通りです:

-d  トップレベルのプロセスだけではなく、 制御 tty ごとの全プロセスリストをダンプします。

-h  最初の行を出力しません。

-i  アイドル時間の順に出力します。

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

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

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

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

関連ファイル
/var/run/utmp
    システム上のユーザのリスト

関連項目
finger(1), ps(1), uptime(1), who(1)

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

CPU 時間は推定でしかありません。特に、誰かがバックグラウンドでプロセスを 動かしたままログアウトすると、そのプロセスの時間が、 現在その端末を使用している人の CPU 時間に加算されます。

バックグラウンドで動いているプロセスは、たとえその負荷が非常に 大きくても出力されません。

バックグラウンドである場合に典型的ですが、プロセスに空白やゴミの引数が ついて表示されることがあります。このような場合、コマンドの名前は丸括弧で 括られて表示されます。

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

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

歴史
w は 3.0BSD から登場しました。