「最後の」コマンド:最新のユーザーログインを表示する方法


19

私が知っているように、lastコマンドはすべてのユーザーによる最近のログインを表示します。しかし、私のPC(CentOS)は約1年間使用されており、多くのユーザーがログインしています。lastコマンドを使用しようとしましたが、2013年6月から2013年9月まで表示されました。

私の質問は、最近ログインした最新のユーザーをどのように表示できるかということです(2013年12月から2014年1月まで)。


を使用して、/var/log/wtmpファイルが存在するかどうかと、最終変更時刻を確認してくださいstat
mkc 14年

また、最後のコマンドの出力の最新のエントリが上部にあることに注意してください。
mkc 14年

とにかく下にそれを作るには?
トーマス14年

1
試してくださいlast | tac
mkc 14年

1
ちょうど統計を行う:stat /var/log/wtmp
mkc 14年

回答:


15

last通常、ログファイルから読み取り/var/log/wtmp、過去にユーザーが成功したログイン試行のエントリを出力します。出力では、最後にログインしたユーザーのエントリが一番上に表示されます。あなたの場合、おそらくこれが原因で気付かれないでしょう。

ファイル/var/log/wtmpが最後に書き込まれた日時を確認するには、stat次のコマンドを使用できます。

stat /var/log/wtmp

出力を逆に印刷するにはGNU tac、次のようにlastの出力を(catの反対側)にパイプできます。

last | tac

16

lastlogLinuxでcommand コマンドを使用することもできます。ユーザーログインのログを調べるときに、日付の範囲をより詳細に制御できます。

lastlogのmanページからの抜粋

   lastlog - reports the most recent login of all users or of a given user

過去100日間にシステムにログインしたユーザーを見つけるため。

$ lastlog -b 0 -t 100
Username         Port     From             Latest
sam              pts/0    pegasus          Wed Jan  8 20:32:25 -0500 2014
joe              pts/0    192.168.1.105    Thu Dec 12 12:47:11 -0500 2013

これは、これらのユーザーが最後にこのシステムにログインしたことを示しています。時間の範囲は過去100日間を示しています。今日より前(-b 0)および100日前(-t 100)。

また、範囲を省略して、これまでにログインしたすべてのユーザーと最後にログインしたユーザーを表示するだけで、すべてのユーザーを表示することもできます。


0

このスクリプトを試すことができます:

for user in $( awk -F: '{ print $1}' /etc/passwd)
do
lastlog=$(sudo lsuser -a time_last_login $user | awk -F'=' '{print $NF}')
echo "$user         \c"; perl -le "print scalar localtime($lastlog);"
done

1
Unix.SEへようこそ。存在する場合、このアプローチが既存の回答よりも優れている点を説明していただけますか?
スティーブンキット

このスクリプトは、UNIX(AIX)のすべてのユーザーの最後のログタイムスタンプを提供します

情報をありがとう; 回答を編集してそのことを伝えてください。また、質問はAIXではなくCentOSに関するものです。
スティーブンキット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.