

lastでは最終ログイン時刻は見れない、lastlogを使う
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
lastで探して迷った
「ユーザーの最終ログイン時刻を知りたい」と思って真っ先に last を打った。けど last はログイン・ログアウトの履歴を全部並べただけのコマンドで、ユーザーごとの最終ログインを一発で出してくれるわけじゃなかった。
lastlogを使う
ユーザーごとの最終ログイン時刻がほしいなら lastlog の方が近い。shadow-utilsパッケージに入っているコマンドで、CentOS6でもUbuntu12.04でも標準で入ってた。
lastlogこれで全ユーザー分がずらっと出る。特定ユーザーだけでいいなら以下でいい。
lastlog -u example_userログイン履歴が一件もないユーザーは **Never logged in** と表示される。
lastlogが見てるところ
lastlog は /var/log/lastlog を見て表示しているだけらしい(実機未確認)。last が /var/log/wtmp を見ているのとは別物。
ディストリ・バージョンでの違い
- CentOS6 / RHEL6系: shadow-utils由来の
lastlogがそのまま使える。オプションも-u-b(指定日数より前を表示)-t(指定日数以内を表示)あたりが一通り揃ってる。 - Ubuntu12.04(LTS): 同じくshadow-utils系なので挙動はほぼ同じ。
- この時点(2013年時点)では、まだRHEL/CentOSもUbuntuもinitはSysV init(Ubuntuだと一部Upstart)で、systemdはまだ主流ではない。なので今回は
loginctlの類は使わない・使えない前提で書いてる。
今ログイン中のユーザーを知りたい場合
最終ログイン時刻ではなく「今誰がログインしているか」なら who や w の方が合っている。
追記(この記事より新しい情報)
- systemdが主流になったディストリ(RHEL7以降、Ubuntu15.04以降など)では、ログインセッション管理は
loginctl経由でも見れる。loginctl list-sessionsでセッション一覧、loginctl show-user <user> -p Stateで状態確認ができる。ただしこれはlastlogの代替ではなく「今のセッション」を見るためのもの。 - 上記のためこの記事の
lastlog/lastの使い分け自体は現行のディストリでも変わらない。