名称
who ― システムにログインしているユーザーを表示
構文
who [-muTlHqpdbrtasARW]
[file]
who am i
who am I
説明
who コマンドは、現在システムを使用中のユーザーについて、
ユーザー名、ターミナル回線、ログイン時刻、 その回線で入力動作が行われてからの経過時間、
ユーザーのホスト名、およびコマンドインタプリタ (シェル) の プロセス
ID をリストします。 who は utmps データベースを調べて、これらの情報を収集します。 file を指定すると、そのファイルが調査対象になります。 file には、 utmp の形式のファイルを指定します。
am i または am I オプションを指定して who コマンドを実行すると、そのコマンドを実行したユーザー自身の情報が出力されます。
デフォルトの -s オプションの場合を除き、出力エントリーの一般形式は次のとおりです。
name [state] line time activity
pid [comment] [exit]
各種オプションを指定することにより、 who によって、ログイン、ログオフ、リブート、システムクロックに対する変更、および init プロセスが生成した子プロセスをリストすることができます。
オプション
| -m | | 現在のターミナルに関する情報のみを表示します。 このオプションは、上記の am
i および am I オプションと同じです。 |
| -u | | 現在ログインしているユーザーに関する情報をリストします。 name はユーザーのログイン名です。 line はディレクトリ /dev にある回線の名前です。 time フィールドはユーザーがログインした時刻を示します。 activity は、特定の回線で最後に入力動作が行われてから 経過した時間と分を示します。ここにピリオド
(.) が表示された場合は、直前の 1 分間にターミナルで実行中の動作が検出されたこと、
つまり "使用中" であることを示します。また、24 時間以上経過した場合、
またはブート以降、回線がまったく使用されていない場合には、ここに old と示されます。このフィールドは、
ターミナルでユーザーが作業しているかどうかを確認する場合に利用できます。 pid には、ユーザーのログインプロセスのプロセス ID が示されます。 comment には、 /etc/inittab の中にあるこの回線に関連するコメントが表示されます inittab(4) を参照)。ここには、ターミナルが存在する位置、データセットの電話番号、
ターミナルのタイプ (直接接続されている場合) などに 関する情報が示されます。そのような情報が見つからない場合、 who は、 utmps データベースまたは指定のファイルに保存されているユーザーのホスト名を comment として表示します。なお、 -u オプションを -R オプションと併用すると、 /etc/inittab ファイルのコメントではなく、ユーザーのホスト名がプリントされます。 |
| -T | | ターミナル回線の state を表示する点を除き、 -u オプションと同じです。 state は別のユーザーがそのターミナルに書き込みができるかどうかを示します。
いずれのユーザーでも書き込みができる場合には + が表示され、それ以外の場合は - が表示されます。 root は、 state フィールドに + または - のいずれが表示されていても、すべての回線に書き込みができます。
無効な回線を検出すると、 ? がプリントされます。 (XPG4 のみ) 次のフィールドだけが表示されます。 name state line time |
| -l | | システムがユーザーのログインを待っている回線のみをリストします。この場合、 name フィールドには LOGIN と表示されます。これ以外のフィールドは、 state フィールドがないことを除いて、ユーザーエントリーの場合と同じです。 |
| -H | | 通常の出力の上にカラムごとの見出しをプリントします。 |
| -q | | who の簡易バージョンです。現在ログイン中のユーザーの名前と数だけを表示します。
このオプションを使用すると、その他のオプションはすべて無視されます。 |
| -p | | init が前に生成した子プロセスのうち、現在アクティブ状態にある その他すべてのプロセスをリストします。 name フィールドには、 init が実行したプログラムの名前を /etc/inittab の中から示します。 state, line, および activity の各フィールドには意味がありません。 comment フィールドには、このプロセスを生成した回線の id フィールドを /etc/inittab の中から見つけて表示します。 inittab(4) を参照してください。 |
| -d | | 終了したプロセスのうち、 init が再生成していないものをすべて表示します。
アクティブでないプロセスについて、 exit フィールドには、プロセスの終了コード (wait() が戻した値 ― wait(2) を参照) が示されます。このオプションは、
プロセスが終了した原因を調べる場合に利用できます。 |
| -b | | 最後に行ったリブートの日時を示します。 |
| -r | | init プロセスの現在の実行レベルを示します。
最後の 3 つのフィールドには、 init の現在の状態、その状態になった回数、および以前の状態が表示されます。
これらの各フィールドは、 init の実行状態が変化するごとに、更新されます。 |
| -t | | root がシステムクロックに加えた最後の変更 (date コマンドによる)
を示します。 su(1) を参照してください。 |
| -a | | すべてのオプションをオンにして、 utmps データベースまたは指定の file を処理します。 |
| -s | | デフォルト、 name, line, および time の各フィールドだけをリストします。 |
| -A | | /var/adm/wtmp ファイルを指定した場合
(-W オプションを使用すると /var/adm/wtmps ファイルを調べられます)、 startup または shutacct コマンドでアカウンティングシステムをオンまたはオフにした日時が示されます acctsh(1M) を参照)。 name フィールドはピリオド (.) を示します。 line フィールドは、 acctg on、 acctg
off または shutacct コマンドのオプションとして指定された理由を示します。 time はオン/オフの動作が行われた時刻を示します。 |
| -R | | ユーザーのホスト名を表示します。tty 上でログインした場合、 who は gethostname()
から戻された文字列を表示します gethostname(2) を参照)。 ユーザーが tty
上でログインしたのではない場合には、 utmps データベースまたは指定の utmp の形式のファイルに保存されたホスト名が保存時に切り捨てられていない
限り (すなわち、情報を失わずにホスト名全体が保存されている場合)、
その保存されていたホスト名が表示されます。これ以外の場合は、 gethostbyaddr() 関数
または getipnodebyaddr() 関数 (IPv6) が呼び出され、ホストのインターネットアドレスが渡されます gethostent(3N) を参照)。そして、 gethostbyaddr() (IPv4)
または getipnodebyaddr() (IPv6) がエラーを戻さない限り、この関数が戻したホスト名が表示されます。
エラーの場合には、一部切り捨てられたホスト名が表示されます。 |
| -W | | /var/adm/wtmps ファイルから情報を取得します。 |
(XPG4 のみ。 -s オプションは、 -d, -a または -T のオプションを併用することはできません。 -u オプションを -T とともに使用すると、 -T の終わりにアイドル時間が追加されます)。
多言語化対応
環境変数
LANG により、 LC_ALL と対応する環境変数
(LC_ で開始する環境変数) でロケールの指定を省略した場合に、
ロケールカテゴリに使用するロケールが決定します。 LANG が設定されていない場合、または空白の文字列に設定されている場合は、
デフォルトの "C" lang(5) を参照)
が使用されます。
LC_CTYPE により、テキストデータのバイトシーケンスを
文字 (例えば、引き数や入力ファイル中のシングルバイト文字、または
マルチバイト文字) として解釈するためのロケールが決定します。
LC_TIME は、日付および時刻の表示形式と内容を決定します。
LC_MESSAGES は、メッセージの表示に使用する言語を決定します。
いずれかの多言語化対応変数に無効な値が設定されている場合、 who は、すべての多言語化対応変数が
"C" に設定されているものとして動作します。 environ(5) を参照してください。
サポートされるコードセット
シングルバイト文字、およびマルチバイト文字のコードセットがサポートされています。
例
現在システムにログインしているユーザーを調べる場合は、次のように入力します。
別のユーザーが使用しているターミナルに書き込みできるかどうかを調べる場合は、
次のように入力します。
表示された結果から、 ユーザー ID の後に正符号 (+)
が付いているかどうかを確認します。
著者
who は、AT&T および HP によって開発されました。
ファイル
/etc/inittab
/etc/utmp
/var/adm/wtmp
/var/adm/wtmps
参照
date(1), login(1), mesg(1), su(1), init(1M), utmpd(1M), gethostname(2),
wait(2), gethostent(3N), getutsent(3C), getbwent(3C), inittab(4),
utmp(4)
標準準拠
who: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2