whoはログインしているユーザーの状況を表示するコマンドだ。
このページではwhoコマンドを使ったログインしているユーザーの情報を調べる方法を解説する。
目次
- 1 whoコマンドの基本
- 2 whoコマンドのオプションたち
- 2.1 オプションの一覧
- 2.2 -bオプション(--bootオプション):最新のシステム起動時間を表示する
- 2.3 -Hオプション(--headingオプション):可視性を良くするためにタイトル行を表示する
- 2.4 -dオプション(--deadオプション):終了したプロセスを表示する
- 2.5 -lオプション(--loginオプション):システムへのログインを表示する
- 2.6 --lookupオプション:IPアドレスではなく正式なホスト名を表示する
- 2.7 -mオプション:標準入力に関連付いているコンピュータのアクセスのみを表示する
- 2.8 -dオプション(--deadオプション):終了したプロセスを表示する
- 2.9 -pオプション(--processオプション):initで起動されたプロセスを表示する
- 2.10 -qオプション(--countオプション):ログイン中のユーザーと人数を表示する
- 2.11 -rオプション(--runlevelオプション):現在のランレベルを表示する
- 2.12 -sオプション(--shortオプション):ログイン名、使っている端末、ログイン時刻、ログインしている端末のIPアドレスを表示する
- 2.13 -tオプション(--timeオプション):システムの最終更新日時の変更時間を表示する
- 2.14 -Tオプション(-wオプション,- -mesgオプション):ユーザーごとのメッセージ状態を+-で表示する
- 2.15 -uオプション(--usersオプション):ユーザーごとの最終操作からの経過時間を表示する
- 2.16 -aオプション(--allオプション):すべての情報を表示する
- 3 who am i
- 4 who関連コマンド
whoコマンドの基本
コマンドの基本動作
使い方は、次のとおり簡単だ。
$ who
ログイン名、使っている端末、ログイン時刻、ログインしている端末のIPアドレスが表示される。
IPアドレスは、自分自身のコンピュータから実行したwhoコマンドの結果には表示されない。
使っている端末は、pts1やtty1(1はコンピュータが自動で割り振る数字)などと表示される。たとえば、複数のコンピュータから1つのコンピュータにターミナルソフトでアクセスすることもあるだろう。新しいアクセスをするたびにptsまたはttyが増えていく。
現在、割り振られているのが何番目のptsまたはttyか表示している。
自分自身がどのptsまたはttyかを調べるにはttyコマンドを使う。
$ tty
すると/dev/pts/0のように表示され、自分自身はpts/0であることがわかる。
whoコマンドのオプションたち
オプションの一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション-b (オプション--boot)
最新のシステム起動時間を表示する
オプション-H (オプション--heading)
可視性を良くするためにタイトル行を表示する
オプション-d (オプション--dead)
終了したプロセスを表示する
オプション-l (オプション--login)
システムへのログインを表示する
オプション--lookup
IPアドレスではなく正式なホスト名を表示する
オプション-m
標準入力に関連付いているコンピュータのアクセスのみを表示する
オプション-p (オプション--precess)
initで起動されたプロセスを表示する
オプション-q (オプション--count)
ログイン中のユーザーと人数を表示する
オプション-r (オプション--runlevel)
現在のランレベルを表示する
オプション-s (オプション--short)
ログイン名、使っている端末、ログイン時刻、ログインしている端末のIPアドレスを表示する
オプション-t (オプション--time)
システムの最終更新日時の変更時間を表示する。
オプション-T (オプション-w, オプション--mesg)
ユーザーごとのメッセージ状態を+-で表示する。
オプション-u (オプション--users)
ユーザーごとの最終操作からの経過時間を表示する。
オプション-a (オプション--all)
すべての情報を表示する。
では、詳しく見ていこう。
-bオプション(--bootオプション):最新のシステム起動時間を表示する
ログインしているシステムの起動時間を表示するオプションで、書式は次のとおりだ。
$ who -b
システムの起動時間が表示された。
-Hオプション(--headingオプション):可視性を良くするためにタイトル行を表示する
表示の先頭に項目名を記述するオプションで、書式は次のとおりだ。
$ who -H
タイトル名が表示された。
-dオプション(--deadオプション):終了したプロセスを表示する
exitコマンドなどで終了したプロセスがあれば表示する。
$ who -d
exitコマンドで終了したプロセスが2つ表示された。
-lオプション(--loginオプション):システムへのログインを表示する
ログインしたプロセスがあれば表示する。書式は次のとおりだ。
$ who -l
--lookupオプション:IPアドレスではなく正式なホスト名を表示する
正式なホスト名がDNSから取得できれば、IPアドレスではなく正式なホスト名で表示する。書式は次のとおりだ。
$ who --lookup
-mオプション:標準入力に関連付いているコンピュータのアクセスのみを表示する
標準入力というのは普通であればキーボードのことだ。
リモートでアクセスするのではなく、直接キーボードから入力できるコンピュータを表示する。書式は次のとおりだ。
$ who -m
キーボードから直接操作できるコンピュータはIPアドレス192.168.179.11でユーザーpiでアクセスしているユーザーということがわかった。
-dオプション(--deadオプション):終了したプロセスを表示する
exitコマンドなどで終了したプロセスがあれば表示する。書式は次のとおりだ。
$ who -d
exitコマンドで終了したプロセスが2つ表示された。
-pオプション(--processオプション):initで起動されたプロセスを表示する
initコマンドなどで起動されたプロセスを表示する。書式は次のとおりだ。
$ who -p
-qオプション(--countオプション):ログイン中のユーザーと人数を表示する
ログイン中のユーザーとその人数を表示する。書式は次のとおりだ。
$ who -q
このコンピュータには、3人アクセスしており、全員piユーザーでアクセスしていることが表示された。
-rオプション(--runlevelオプション):現在のランレベルを表示する
ランレベルというのは、コンピュータの現在の実行している状態を表すレベルのことだ。
完全に電源が切れている場合はランレベル0、マルチユーザーがアクセスできる状態で動作していればランレベル3、再起動プロセスに入っていればランレベル6などのように、OSにもよるが規定されている。
そのランレベルを表示するオプションで書式は次のとおりだ。
$ who -r
現在のランレベルは5であることが表示された。
ランレベル5は、マルチユーザーがアクセスでき、GUIのディスプレイも同時に動いている状態だ。
-sオプション(--shortオプション):ログイン名、使っている端末、ログイン時刻、ログインしている端末のIPアドレスを表示する
ログイン名、使っている端末、ログイン時刻、ログインしている端末のIPアドレスを表示するオプションなのだが、オプションなしでこの状態になるので特に指定することはない。書式は次のとおりだ。
$ who -s
ログイン名、使っている端末、ログイン時刻、ログインしている端末のIPアドレスが表示された。
-tオプション(--timeオプション):システムの最終更新日時の変更時間を表示する
システムの最終更新日時の変更時間を表示するオプションだ。
システム日時を変更したことが無ければ表示されない。
書式は次のとおりだ。
$ who -t
-Tオプション(-wオプション,- -mesgオプション):ユーザーごとのメッセージ状態を+-で表示する
ユーザーごとのメッセージ状態を+-で表示するオプションで書式は次のとおりだ。
$ who -T
ユーザー名と端末名の間に+-でメッセージ状況が表示された。
-uオプション(--usersオプション):ユーザーごとの最終操作からの経過時間を表示する
ユーザーごとの最終操作からの経過時間を表示するオプションで書式は次のとおりだ。
$ who -u
ログイン時間の右に「昔」「.」「00:01」などが書いてあるが、これが経過時間だ。
「昔」は「old」と表示されているかも知れない。これは24時間以上操作をしていないユーザーだ。
「.」は1分以内に操作したユーザーだ。少なくとも操作しているユーザーはwhoコマンドを入力するという操作をしているので1人は「.」が表示されるはずだ。
-aオプション(--allオプション):すべての情報を表示する
すべての情報を一度に表示するオプションだ。
-b,-d,--login,-p,-r,-t,-T,-uのオプションをすべて付与した時と同じ動作となる。
$ who -a
すべての情報が表示された。
who am i
実はwhoコマンドには引数のようなものが存在する。
who am iという記述方法だ。
その通りの意味で、自分自身を調べる記述だ。
実際には、-mオプションでの表示内容と同じ内容が表示されるのだ。
操作先のコンピュータの自身を調べるということは、その操作先のキーボードで直接操作できるコンピュータを調べるということと同義だ。
who関連コマンド
最後にwhoコマンドに関連して、基本的なログインユーザーを操作するコマンドも紹介しておく
wallコマンド
ログインしているユーザー全員の端末画面に一斉にメッセージを送信する。
ttyコマンド
自分がコンピュータにアクセスしているptsやtty番号を調べる。
echoコマンド
端末画面に文字を表示する。リダイレクト機能を使って指定した端末にのみメッセージを送ることができる。
まとめ
今回は、whoコマンドを使ったログインユーザーの状況を調べる方法を解説した。
ログインしたまま放置しているユーザーや、何度もログイン/ログアウトを繰り返しているユーザー、必要以上に同じ端末から様々なユーザーとしてログインしているケースなど、ネットワークユーザーが監視するには最適なコマンドだ。
少なくとも責任を持って管理しているコンピュータへのアクセスは折に触れチェックしてみよう。
-Hオプション(--headingオプション):可視性を良くするためにタイトル行を表示する
の部分のオプションが間違ってます。