who / w / last 入門 - ログイン中のユーザーと履歴を調べる
この記事でできるようになること
- `who` と `w` で今ログインしている人と、その作業内容を確認できる
- `last` で過去のログイン履歴と再起動の履歴をさかのぼれる
- 「今」を見るコマンドと「過去」を見るコマンドを使い分けられる
前提知識(先に読むと理解しやすい記事)
このサーバー、今だれが使ってる?
who で「今ログインしている人」がわかる。w なら「その人が何をしているか」まで見える。last は「過去に誰がいつログインしたか」だね。先に覚える「画面が止まって見えるとき」の抜け方
last は履歴をたくさん出す。画面が流れ続けて止まらないように見えることがある。次の方法でぬけられる。
| 見えている状態 | 抜け方 |
|---|---|
| 出力がえんえんと流れて終わらない | Ctrl+C を押してやめる |
: や (END) が出て 1 画面ずつ止まる |
ページャ(長い出力を 1 画面ずつ見せる道具。less や more のこと)が動いている。q を押すとぬけられる |
who を打っても何も出ない |
失敗ではない。今ログインしている人がいない状態。WSL やコンテナでは記録ファイルが空のこともある |
| そもそもたくさん出したくない | last -n 5 のように件数を先にしぼって実行する |
who と w と last はどれも表示するだけのコマンド。押しても設定は変わらないので、安心して試してほしい。
この記事でわかること
whoで 今ログイン中のユーザー を一覧で見る方法wで各ユーザーの 作業内容とサーバーの負荷 をたしかめる方法lastで 過去のログイン履歴 をさかのぼる方法last rebootで 再起動・起動の履歴 を調べる方法who・w(今)とlast(過去)の 使い分け
1. who / w / last の違いは?
結論:
whoとwは「今ログインしている人」を表示する。lastは「過去のログイン履歴」を表示する。wはwhoより詳しく、各人の作業内容まで見える。
who と w は今この瞬間のログイン状況。last は履歴だね。who はシンプル。w はそこに「何をしているか」が加わるイメージだよ。セッションとは
セッションは「1 人のユーザーがログインしてからログアウトするまでの、ひとつながりの利用」のこと。「ログインセッション」「接続」も、ほぼ同じ意味で使われる。同じ人が 2 か所から入れば、セッションは 2 つになる。
| コマンド | 何を見る | 情報の種類 |
|---|---|---|
who |
今ログイン中の人 | 今(ライブ) |
w |
今+各自の作業内容 | 今(ライブ・詳細) |
last |
過去のログイン履歴 | 過去(ログ) |
who と w は今のセッション情報(/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)
リナの失敗:whoami と who am i を混同する
whoami を打ったのに、名前しか出ません。端末も時刻も出ないんですけど...。whoami(スペースなし・1 単語)は ユーザー名だけ を表示する別コマンドなんだ。who の仲間じゃないんですか?who am i(スペースあり・3 単語)なら、who の出力から自分の行だけを抜き出してくれるよ。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
load average(負荷平均)とは
load average は「順番待ちを含めて、どれだけの仕事が積まれているか」を表す数字。混雑度の目安と考えてよい。レジの行列に例えると、並んでいる人数に近い。数字が小さいほど空いている。
w の主な列
USER/TTY/FROM:誰が・どの端末で・どこからLOGIN@:ログインした時刻IDLE:操作していない時間(長いほど放置中)JCPU/PCPU:CPU をどれだけ使ったかの時間(最初は読み飛ばしてよい)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 からの大量の失敗)を確認するのに役に立つ。
6. ミニ課題で手を動かそう
結論: 「今いる人数」「直近の履歴」「再起動の履歴」の 3 課題で、今と過去の見分け方を体に入れる。
課題 1: 今ログインしている人数を調べる
やること: 今このサーバーに何人ログインしているかをたしかめよう。
ヒント1(方向づけ)を見る
「今」を見るコマンドは 2 つある。人数そのものを 1 行目に出してくれる方を選ぼう。
ヒント2(コマンド名)を見る
使うのは w。1 行目のヘッダーに users という表示がある。who の行数を数えてもわかる。
答えを見る
$ w
10:15:32 up 2 days, 3:41, 2 users, load average: 0.15, 0.10, 0.05
2 users の部分が人数。
課題 2: 直近 3 件のログイン履歴を見る
やること: 過去のログイン履歴を、新しい方から 3 件だけ表示しよう。
ヒント1(方向づけ)を見る
「過去」を見るコマンドを使う。そのままだと大量に出るので、件数をしぼるオプションを付けよう。
ヒント2(コマンド名)を見る
使うのは last。件数をしぼるのは -n 件数。last -3 という書き方でも同じ。
答えを見る
$ last -n 3
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)
課題 3: サーバーの再起動履歴を見る
やること: このサーバーがいつ起動したかの履歴を表示しよう。
ヒント1(方向づけ)を見る
履歴を見るコマンドは、後ろに言葉をつけると絞り込める。起動を表す言葉をつけてみよう。
ヒント2(コマンド名)を見る
使うのは last。後ろに reboot をつける。
答えを見る
$ last reboot
reboot system boot 6.8.0-generic Thu Jun 4 08:00 still running
who と w、過去は last」で覚えられそうです。w を打つ。人数も負荷も作業内容も、1 画面でわかるからね。7. よくあるつまずきと対処
結論: つまずきの多くは「
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 の意味がわからない |
滞在時間の表記と混同 | 「今もログイン中」の意味 |
last が「wtmp begins ...」の 1 行しか出ない |
履歴ファイル(/var/log/wtmp)が空 |
WSL やコンテナではよくある。実サーバか VM で試す |
まよったらこの順で。今いる人を知りたい → who、今いる人が何をしているか・負荷 → w、過去にさかのぼりたい → last。
今日の 3 行まとめ
whoは今いる人の一覧、wはそこに作業内容と負荷が加わる。まずこの 2 つで現状をおさえるlastは過去の履歴。last -n 5で件数を絞り、last rebootで起動の履歴だけを見られるwhoami(1 単語)とwho am i(3 単語)は別のコマンド。ログイン失敗を追うときはsudo lastb