whoコマンドの使い方を完全ガイド!Linuxでログイン中のユーザーを確認する方法
生徒
「Linuxで今誰がログインしているか確認する方法ってありますか?」
先生
「ありますよ。Linuxではwhoコマンドを使うことで、現在ログインしているユーザーを簡単に確認できます。」
生徒
「それって難しくないですか?パソコン初心者でも使えますか?」
先生
「全く難しくありません。whoと入力するだけで使えます。詳しく説明していきますね。」
1. whoコマンドとは?
whoコマンドは、Linuxシステムに現在ログインしているユーザーの情報を表示する基本的なコマンドです。複数のユーザーが同時にログインできるLinuxの特性上、誰がシステムを使っているのかを確認することは重要な管理作業の一つとなります。
たとえば、あなたが会社や学校で共有しているLinuxサーバーにアクセスしたとき、「今、他に誰かログインしているかな?」と知りたくなることがあるでしょう。そんなときに使うのがwhoコマンドです。WindowsやMacと違い、Linuxではターミナル(黒い画面)で文字を入力してコマンドを実行します。最初は慣れないかもしれませんが、とてもシンプルで便利なコマンドです。
2. whoコマンドの基本的な使い方
whoコマンドの基本的な使い方は非常にシンプルです。ターミナルを開いて、whoと入力してエンターキーを押すだけです。
who
tanaka pts/0 2026-01-09 10:15 (192.168.1.10)
suzuki pts/1 2026-01-09 11:30 (192.168.1.20)
この結果から、tanakaさんとsuzukiさんの二人がログインしていることがわかります。それぞれの情報を詳しく見ていきましょう。
- ユーザー名(tanaka、suzuki):ログインしているユーザーの名前です。
- 端末名(pts/0、pts/1):どの端末からログインしているかを示します。
ptsは「仮想端末」を意味し、リモート接続などで使われます。 - ログイン日時(2026-01-09 10:15):いつログインしたかの日付と時刻です。
- 接続元(192.168.1.10):どこからログインしているかのIPアドレスやホスト名です。
この情報を見れば、誰がいつどこからログインしているのかが一目でわかります。
3. whoコマンドの便利なオプション
whoコマンドには、より詳しい情報を表示したり、特定の情報だけを表示したりするためのオプションがあります。オプションとは、コマンドの後ろに付け加える「追加の指示」のことです。ハイフン(-)の後にアルファベットを書いて使います。
全ての情報を表示する(-aオプション)
-aオプションを使うと、通常は表示されない情報も含めて全ての情報を表示できます。
who -a
system boot 2026-01-08 09:00
LOGIN tty1 2026-01-08 09:01 580 id=tty1
tanaka + pts/0 2026-01-09 10:15 . 1234 (192.168.1.10)
この表示では、システムの起動時刻やログインプロセスの詳細情報なども確認できます。システム管理者がトラブルシューティングを行う際に役立つ情報です。
見出しを付けて表示する(-Hオプション)
-Hオプション(大文字のH)を使うと、各列に見出しが表示されて見やすくなります。
who -H
NAME LINE TIME COMMENT
tanaka pts/0 2026-01-09 10:15 (192.168.1.10)
suzuki pts/1 2026-01-09 11:30 (192.168.1.20)
初心者の方は、この-Hオプションを使うと、どの情報が何を意味しているのかがわかりやすくなるのでおすすめです。
ログイン中のユーザー数を表示する(-qオプション)
-qオプションを使うと、詳細情報ではなく、ユーザー名と合計人数だけを簡潔に表示します。
who -q
tanaka suzuki yamada
# users=3
「今何人ログインしているか」だけを素早く知りたいときに便利です。
4. 自分自身の情報だけを確認する方法
「他の人の情報はいらないから、自分のログイン情報だけを見たい」という場合は、who am iまたはwhoamiコマンドを使います。この二つは似ていますが、少し違います。
who am i
tanaka pts/0 2026-01-09 10:15 (192.168.1.10)
who am iは、現在のログインセッション情報を表示します。一方、whoamiコマンドは実行ユーザーの名前だけを表示します。
whoami
tanaka
whoamiは「私は誰?」という意味で、ユーザー名だけをシンプルに確認したいときに使います。スクリプト(自動化プログラム)の中で現在のユーザー名を取得する際にもよく使われます。
5. whoコマンドとwコマンドの違い
Linuxにはwhoと似た機能を持つwコマンドというものもあります。この二つの違いを理解しておくと、状況に応じて使い分けられるようになります。
wコマンドは、ログインユーザーの情報に加えて、「各ユーザーが今何をしているか(実行中のコマンド)」も表示します。より詳しい情報が必要なときはwコマンドが便利です。
| コマンド | 表示内容 | 用途 |
|---|---|---|
who |
ログインユーザーの基本情報 | 誰がログインしているか確認したいとき |
w |
ログインユーザー情報+実行中のコマンド | 各ユーザーの作業内容も知りたいとき |
whoami |
自分のユーザー名のみ | 現在のユーザー名だけ確認したいとき |
システム管理者として他のユーザーの動きを監視したい場合はwコマンドが適していますが、単純に「誰がログインしているか」を知りたいだけならwhoコマンドで十分です。
6. whoコマンドの実践的な活用例
ここでは、実際の業務や学習でよく使われるwhoコマンドの活用例をいくつか紹介します。
セキュリティチェック
サーバー管理者は定期的にwhoコマンドを実行して、不正なログインがないかチェックします。見覚えのないユーザーや、通常と異なる時間帯のログインがあれば、セキュリティ上の問題がある可能性があります。
システムメンテナンス前の確認
サーバーの再起動やメンテナンス作業を行う前に、whoコマンドで他のユーザーがログインしていないか確認します。他のユーザーが作業中にシステムを停止してしまうと、データの損失や作業の中断を引き起こす可能性があるからです。
ログイン履歴の記録
whoコマンドの出力をファイルに保存しておくことで、ログイン履歴として記録できます。シェルのリダイレクション機能(>記号)を使います。
who >> login_history.txt
このコマンドは、whoの実行結果をlogin_history.txtというファイルに追記します。定期的に実行すれば、誰がいつログインしたかの記録が残ります。
7. whoコマンドが表示する端末の種類
whoコマンドの出力に表示される端末名(LINE列)には、いくつかの種類があります。これらを理解すると、ユーザーがどのような方法でログインしているかがわかります。
- console:物理的なコンソール(サーバー本体に直接接続されたキーボードとモニター)からのログインです。
- tty:物理的な端末や仮想コンソールからのログインです。
tty1、tty2のように番号が付きます。 - pts:疑似端末(Pseudo Terminal Slave)の略で、SSH接続などのリモートログインや、GUI環境でターミナルアプリを開いたときに使われます。
最近のLinux環境では、リモート接続が主流なため、ptsが最もよく見られる端末タイプです。たとえば、自宅のパソコンからSSHでサーバーに接続した場合、pts/0やpts/1といった端末名が表示されます。
8. トラブルシューティング:whoコマンドで何も表示されない場合
whoコマンドを実行しても何も表示されない、または期待した結果が表示されない場合があります。その原因と対処法を説明します。
誰もログインしていない
最も単純な理由は、あなた以外に誰もログインしていない場合です。ただし、通常は自分自身のログイン情報は表示されるはずです。もし自分の情報も表示されない場合は、次の原因が考えられます。
utmpファイルの問題
whoコマンドは、/var/run/utmpというシステムファイルからログイン情報を読み取ります。このファイルが破損していたり、権限の問題で読み取れなかったりすると、正しい情報が表示されません。システム管理者権限(root)で確認してみましょう。
ls -l /var/run/utmp
-rw-rw-r-- 1 root utmp 1152 Jan 9 10:15 /var/run/utmp
このファイルが存在し、適切な権限が設定されているか確認します。問題がある場合は、システムの再起動で解決することもあります。
9. whoコマンドのオプション組み合わせ例
whoコマンドは複数のオプションを組み合わせて使うこともできます。ニーズに合わせて柔軟に使いこなしましょう。
who -H -u
NAME LINE TIME IDLE PID COMMENT
tanaka + pts/0 2026-01-09 10:15 . 1234 (192.168.1.10)
suzuki + pts/1 2026-01-09 11:30 00:05 2345 (192.168.1.20)
この例では、-H(見出し表示)と-u(アイドル時間とプロセスID表示)を組み合わせています。IDLE列は、そのユーザーが最後に操作してからどれくらい時間が経過しているかを示します。.は現在アクティブ(操作中)であることを意味し、00:05は五分間操作がないことを示します。
この情報は、システムメンテナンス前に「このユーザーは今作業しているのか、それとも放置されているのか」を判断するのに役立ちます。
10. lastコマンドとの違いと使い分け
ログイン情報を確認するコマンドとして、whoの他にlastというコマンドもあります。これらの違いを理解しておきましょう。
whoコマンドは「現在ログインしているユーザー」を表示しますが、lastコマンドは「過去のログイン履歴」を表示します。つまり、既にログアウトしたユーザーの情報も見ることができます。
たとえば、「昨日の夜中に誰かがログインしていなかったか」を調べたい場合は、lastコマンドを使います。一方、「今この瞬間に誰がシステムを使っているか」を知りたい場合はwhoコマンドを使います。
どちらのコマンドも、Linuxシステムの管理やセキュリティ監視において重要なツールです。状況に応じて適切なコマンドを選択できるようになると、より効率的にシステム管理ができるようになります。