who / w / last 入門 - ログイン中のユーザーと履歴を調べる
このサーバー、今だれが使ってる?
who で「今ログインしている人」、w で「その人が何をしているか」、last で「過去に誰がいつログインしたか」が分かるんだ。この 3 つはセットで覚えると強いよ。この記事でわかること
whoで 今ログイン中のユーザー を一覧表示する方法wで各ユーザーの 作業内容とサーバーの負荷 を確認する方法lastで 過去のログイン履歴 をさかのぼる方法last rebootで 再起動・起動の履歴 を調べる方法who・w(今)とlast(過去)の 使い分け
1. who / w / last の違いは?
結論:
whoとwは「今ログインしている人」を表示し、lastは「過去のログイン履歴」を表示する。wはwhoより詳しく、各人の作業内容まで見える。
who と w は今この瞬間のログイン状況、last は履歴。who がシンプルで、w はそこに「何をしているか」が加わるイメージだね。| コマンド | 何を見る | 情報の種類 |
|---|---|---|
who |
今ログイン中の人 | 今(ライブ) |
w |
今+各自の作業内容 | 今(ライブ・詳細) |
last |
過去のログイン履歴 | 過去(ログ) |
who と w は今のセッション情報(/var/run/utmp)を、last は蓄積されたログ(/var/log/wtmp)を読んでいる。だから last だけは「すでにログアウトした人」も見える。
2. who で今ログイン中の人を見るには?
結論:
whoと打つだけで、今ログインしているユーザー名・端末・ログイン時刻が一覧表示される。
who をそのまま打つだけ。引数もオプションもいらないよ。$ who
lina tty1 2026-06-05 09:12 linny pts/0 2026-06-05 10:03 (192.168.1.20)
tty1 とか pts/0 って何ですか?tty1 は本体に直接つないだコンソール、pts/0 はネットワーク越し(SSH など)の仮想端末。右端の (192.168.1.20) は接続元の IP アドレスで、リモートログインのときに出るんだ。列の意味(左から)
- ユーザー名
- 端末(
tty= 物理端末、pts= 擬似端末=リモート接続) - ログイン日時
- (あれば)接続元のホスト名 / IP
who am i と打つと、自分のセッションの行だけが出るよ。スペースを入れて 3 単語で打つのがポイント。$ who am i
linny pts/0 2026-06-05 10:03 (192.168.1.20)
who am i(スペースあり・3 単語)と whoami(スペースなし・1 単語)は別物。whoami は ユーザー名だけ を表示する別コマンドで、who のオプションではない。混同しやすいので注意。
3. w で各ユーザーの作業内容を見るには?
結論:
wはwhoの情報に加えて、各ユーザーが今どんなコマンドを実行しているか、サーバーの負荷(load average)まで一画面で表示する。
w の出番。一番上にサーバー全体の状態、その下に各ユーザーが今打っているコマンドまで出るよ。$ w
10:15:32 up 2 days, 3:41, 2 users, load average: 0.15, 0.10, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT lina tty1 - 09:12 1:03m 0.20s 0.20s -bash linny pts/0 192.168.1.20 10:03 2.00s 0.10s 0.05s w
w の主な列
USER/TTY/FROM:誰が・どの端末で・どこからLOGIN@:ログインした時刻IDLE:操作していない時間(長いほど放置中)WHAT:今実行しているコマンド
WHAT を見ると、私は -bash(シェルを開いてるだけ)、せんぱいは w を実行中ってことですね。w -h で消せるし、w lina のように名前を付ければそのユーザーだけに絞れるよ。$ w -h lina
lina tty1 - 09:12 1:03m 0.20s 0.20s -bash
4. last で過去のログイン履歴を見るには?
結論:
lastは過去のログイン履歴を新しい順に表示する。すでにログアウトした人も含めて「いつ誰がどこからログインしたか」をさかのぼれる。
last。ログイン・ログアウトの記録が新しい順にずらっと出るよ。件数が多いので、最初は -n で件数を絞るのがおすすめ。$ last -n 5
linny pts/0 192.168.1.20 Fri Jun 5 10:03 still logged in lina tty1 Fri Jun 5 09:12 still logged in linny pts/0 192.168.1.20 Thu Jun 4 18:40 - 19:55 (01:15) lina pts/1 192.168.1.31 Thu Jun 4 14:02 - 17:30 (03:28) reboot system boot 6.8.0-generic Thu Jun 4 08:00 still running
still logged in と、- 19:55 (01:15) みたいな書き方が混ざってます。still logged in は「今もログイン中」。18:40 - 19:55 (01:15) は「18:40 にログインして 19:55 にログアウト、滞在 1 時間 15 分」という意味だよ。過去の人はログアウト時刻と滞在時間まで分かるんだ。last -n 5 は新しい 5 件だけ表示する。last -5 と書いても同じ。履歴は溜まりやすいので、まず件数を絞ってから探すと見やすい。
5. 再起動や特定ユーザーを調べるには?
結論:
last rebootで再起動・起動の履歴、last ユーザー名で特定ユーザーのログイン履歴だけに絞り込める。
reboot って行がありましたね。サーバーがいつ再起動したかも分かるんですか?last reboot と打つと、起動した時刻の履歴だけが並ぶ。「いつ落ちた / いつ立ち上がった」を追うときに便利なんだ。$ last reboot
reboot system boot 6.8.0-generic Thu Jun 4 08:00 still running reboot system boot 6.8.0-generic Mon Jun 1 07:55 - Jun 4 07:58 (2+23:03)
last の後ろにユーザー名を付けるだけ。last lina なら lina のログインだけが並ぶよ。$ last lina
lina tty1 Fri Jun 5 09:12 still logged in lina pts/1 192.168.1.31 Thu Jun 4 14:02 - 17:30 (03:28) lina tty1 Wed Jun 3 09:30 - 18:10 (08:40)
ログインの失敗 を調べたいときは last ではなく lastb(btmp ログ)を使う。lastb は管理者権限が必要なので sudo lastb と打つ。不正アクセスの兆候(知らない IP からの大量の失敗)を確認するのに役立つ。
ミニ課題(クリックで開く)
「今ログインしている人数」と「直近 3 件のログイン履歴」を、それぞれ別のコマンドで確認してみよう。
ヒント: 人数は w のヘッダー行(または who の行数)で分かる。履歴は last -n 3 で 3 件に絞れる。
6. よくあるつまずきと対処
結論: つまずきの多くは「
whoamiとwho am iの混同」「lastのstill logged inの読み違い」「ログイン失敗をlastで探してしまう」の 3 つ。
| 症状 | 原因 | 対処 |
|---|---|---|
| ユーザー名しか出ない | whoami を使っている |
一覧なら who、詳細なら w |
who am i がエラーになる |
スペースの付け方が違う | 半角スペースで 3 単語 who am i |
last の出力が大量で読めない |
全履歴を表示している | last -n 10 などで件数を絞る |
ログイン失敗が last に出てこない |
成功ログ(wtmp)を見ている | 失敗は sudo lastb(btmp)で見る |
still logged in の意味が分からない |
滞在時間の表記と混同 | 「今もログイン中」の意味 |
迷ったらこの順で。今いる人を知りたい → who、今いる人が何をしているか・負荷 → w、過去にさかのぼりたい → last。