lastコマンド

last/var/log/wtmpに記録されたログイン履歴を新しい順に表示するコマンド。誰がいつどこから接続したかを確認できる。現在ログイン中のユーザーを調べるwhowと違い、過去のログインとログアウトをさかのぼって追える。

$ last
alice    pts/3        192.168.10.21    Tue Aug 11 14:20   still logged in
bob      pts/2        192.168.10.35    Tue Aug 11 08:03 - 09:30  (01:26)
alice    pts/1        192.168.10.21    Mon Aug 10 09:12 - 11:48  (02:36)
reboot   system boot  6.8.0-45-generic Sat Jul 25 05:51   still running
reboot   system boot  6.8.0-45-generic Mon Jul 20 05:51 - 23:10 (4+17:18)

wtmp begins Mon Jul 20 05:51:25 2026

各列の意味は以下のとおり。

  • 1列目: ユーザー名
  • 2列目: 端末名(pts/3はSSHなどの擬似端末、system bootはシステム起動)
  • 3列目: 接続元のホスト名やIPアドレス(起動時はカーネルのバージョン)
  • 4列目以降: ログイン日時、ログアウト日時、接続時間

ログアウト日時の部分には以下の表示も現れる。

  • still logged in: 現在もログイン中
  • still running: 終了の記録が無く、稼働中とみなされる(rebootの行など)
  • gone - no logout: ログアウトの記録が無いまま終了
  • down: システム停止によってセッションが終了

最終行のwtmp beginsは、ログファイルに残っている最古の記録の日時である。ログローテーションによって古い記録は別ファイルへ退避されるため、表示できる範囲には限りがある。

表示件数を絞る(-n)

履歴が多い場合は-n(--limit)で件数を指定する。

$ last -n 3
alice    pts/3        192.168.10.21    Tue Aug 11 14:20   still logged in
bob      pts/2        192.168.10.35    Tue Aug 11 08:03 - 09:30  (01:26)
alice    pts/1        192.168.10.21    Mon Aug 10 09:12 - 11:48  (02:36)

wtmp begins Mon Jul 20 05:51:25 2026

last -3のように件数を直接指定する書き方もできる。

ユーザーや端末で絞り込む

引数にユーザー名を渡すと、そのユーザーの履歴だけを表示する。

$ last alice
alice    pts/3        192.168.10.21    Tue Aug 11 14:20   still logged in
alice    pts/1        192.168.10.21    Mon Aug 10 09:12 - 11:48  (02:36)

wtmp begins Mon Jul 20 05:51:25 2026

端末名も同様に指定できる。last pts/2でその端末の履歴だけを表示する。ユーザー名と端末名は複数並べられ、いずれかに一致する行が対象になる。

完全な日時を表示する(-F)

デフォルトの表示には年と秒が含まれない。-F(--fulltimes)を付けると完全な日時を表示する。

$ last -F alice
alice    pts/3        192.168.10.21    Tue Aug 11 14:20:00 2026   still logged in
alice    pts/1        192.168.10.21    Mon Aug 10 09:12:04 2026 - Mon Aug 10 11:48:31 2026  (02:36)

wtmp begins Mon Jul 20 05:51:25 2026

期間で絞る(-s / -t)

-s(--since)で開始時刻、-t(--until)で終了時刻を指定する。

$ last -s -1days
alice    pts/3        192.168.10.21    Tue Aug 11 14:20   still logged in
bob      pts/2        192.168.10.35    Tue Aug 11 08:03 - 09:30  (01:26)

wtmp begins Mon Jul 20 05:51:25 2026

時刻には2026-08-11 09:00のような日時のほか、yesterdaytodaynow-1daysのような相対指定も使える。両方を組み合わせると期間を挟み込める。

$ last -s 2026-08-10 -t 2026-08-11

ある時刻にログインしていたユーザーを調べる(-p)

-p(--present)は、指定した時刻にログイン中だったセッションだけを表示する。障害が起きた時刻に誰が作業していたかを調べる場合に使う。

$ last -p "2026-08-10 10:00"
alice    pts/1        192.168.10.21    Mon Aug 10 09:12 - 11:48  (02:36)
reboot   system boot  6.8.0-45-generic Sat Jul 25 05:51   still running

wtmp begins Mon Jul 20 05:51:25 2026

システムの再起動履歴を確認する

rebootという擬似的なユーザー名を指定すると、システムの起動履歴だけを表示する。意図しない再起動の有無を調べる場合に役立つ。

$ last reboot
reboot   system boot  6.8.0-45-generic Sat Jul 25 05:51   still running
reboot   system boot  6.8.0-45-generic Mon Jul 20 05:51 - 23:10 (4+17:18)

wtmp begins Mon Jul 20 05:51:25 2026

接続時間の4+17:18は4日と17時間18分を表す。2行目は7月20日に起動し、7月24日の23:10まで稼働していた記録である。

システム停止の履歴はshutdownを指定する。ただしデフォルトでは停止やランレベル変更の記録を読み飛ばすため、-x(--system)の併用が必要である。

$ last -x shutdown
shutdown system down  6.8.0-45-generic Fri Jul 24 23:10 - 05:51  (06:41)

wtmp begins Mon Jul 20 05:51:25 2026

-xだけを付けると、ログイン履歴に起動と停止の記録を混ぜて時系列で表示する。

$ last -x
reboot   system boot  6.8.0-45-generic Sat Jul 25 05:51   still running
shutdown system down  6.8.0-45-generic Fri Jul 24 23:10 - 05:51  (06:41)
reboot   system boot  6.8.0-45-generic Mon Jul 20 05:51 - 23:10 (4+17:18)

wtmp begins Mon Jul 20 05:51:25 2026

ログインの失敗履歴を確認する(lastb)

lastb/var/log/btmpに記録されたログイン失敗の履歴を表示する。btmpの読み取りにはroot権限が必要である。

$ sudo lastb
root     ssh:notty    192.168.10.99    Tue Aug 11 10:36   still running
alice    ssh:notty    192.168.10.99    Tue Aug 11 10:36 - 10:36  (00:00)
alice    ssh:notty    192.168.10.99    Tue Aug 11 10:36 - 10:36  (00:00)

btmp begins Tue Aug 11 10:36:12 2026

ssh:nottyは端末を割り当てる前にSSH認証で失敗した記録である。失敗の記録には対応する終了の記録が無いため、最新の行はstill runningと表示される。

同じ接続元から短時間に大量の失敗が並ぶ場合、総当たり攻撃を受けている可能性が高い。オプションはlastと共通で、sudo lastb -n 10のように件数を絞れる。

別のログファイルを読む(-f)

ログローテーション後の古い記録を読む場合は-f(--file)でファイルを指定する。

$ last -f /var/log/wtmp.1

ログローテーションの設定はディストリビューションによって異なり、wtmpをローテーションしない環境もある。

新しいディストリビューションでの注意

wtmpのフォーマットはログイン時刻を32ビットで保持するため、2038年に破綻する。2038年問題への対応として、SQLiteを使うwtmpdbへの移行が進んでいる。

Debian 13(trixie)やUbuntu 24.10以降では、util-linuxパッケージがlastlastbを提供しない。wtmpdbパッケージを導入するとwtmpdb lastを使える。wtmpdbへのシンボリックリンクとしてlastコマンドも同時に用意される。

$ sudo apt install wtmpdb libpam-wtmpdb
$ wtmpdb last

ログイン記録の保存先は/var/log/wtmp.dbである。出力は従来のlastにできる限り合わせてあるが、対応していないオプションもある。

一方でRocky Linux 9などのRHEL系や、Ubuntu 24.04 LTSでは従来のlastをそのまま使える。

参考