who / w / last 入門 - ログイン中のユーザーと履歴を調べる

who / w / last 入門 - ログイン中のユーザーと履歴を調べる

このサーバー、今だれが使ってる?

リナ: せんぱい、共有のサーバーで作業してたら急に動作が重くなったんです。もしかして他の誰かもログインしてます? そういうのって調べられるんですか?
ライニー先輩: 調べられるよ。who で「今ログインしている人」、w で「その人が何をしているか」、last で「過去に誰がいつログインしたか」が分かるんだ。この 3 つはセットで覚えると強いよ。

この記事でわかること

  • who今ログイン中のユーザー を一覧表示する方法
  • w で各ユーザーの 作業内容とサーバーの負荷 を確認する方法
  • last過去のログイン履歴 をさかのぼる方法
  • last reboot再起動・起動の履歴 を調べる方法
  • whow(今)と last(過去)の 使い分け

1. who / w / last の違いは?

結論: whow は「今ログインしている人」を表示し、last は「過去のログイン履歴」を表示する。wwho より詳しく、各人の作業内容まで見える。

リナ: 3 つもあると、どれを使えばいいか迷いそうです。
ライニー先輩: ざっくり「今」か「過去」かで分けると覚えやすいよ。whow は今この瞬間のログイン状況、last は履歴。who がシンプルで、w はそこに「何をしているか」が加わるイメージだね。
コマンド 何を見る 情報の種類
who 今ログイン中の人 今(ライブ)
w 今+各自の作業内容 今(ライブ・詳細)
last 過去のログイン履歴 過去(ログ)

whow は今のセッション情報(/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)
リナ: 2 人いますね。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 で各ユーザーの作業内容を見るには?

結論: wwho の情報に加えて、各ユーザーが今どんなコマンドを実行しているか、サーバーの負荷(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
リナ: 一番上の行、情報が多いです...
ライニー先輩: 左から「現在時刻」「稼働時間(up)」「ログイン中の人数」「load average(負荷)」だよ。load average は数字が大きいほど混んでいる目安。3 つ並ぶのは「1 分・5 分・15 分の平均」なんだ。

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. よくあるつまずきと対処

結論: つまずきの多くは「whoamiwho am i の混同」「laststill 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

まとめ / 次に読む