“ Last”命令:如何显示最新的用户登录名?


19

据我所知,该last命令显示所有用户的最近登录信息。但是我的PC(CentOS)已经使用了大约一年,并且有许多用户登录。我尝试使用该last命令,但该命令仅在2013年6月至2013年9月间显示。

我的问题是:如何显示最近登录的最新用户(例如,2013年12月至2014年1月)?


您可以使用来检查/var/log/wtmp文件是否存在及其上次更改时间stat
mkc 2014年

另外,请注意,最后一条命令的输出中的最新条目将位于顶部。
mkc 2014年

无论如何,使其跌到最低点?
Thomas

1
试试last | tac
mkc 2014年

1
只是做一个统计:stat /var/log/wtmp
mkc 2014年

Answers:


15

last通常从日志文件中读取,/var/log/wtmp并打印用户过去成功登录尝试的条目。输出结果是最后登录的用户条目显示在顶部。在您的情况下,也许是因为这个原因。

为了检查何时/var/log/wtmp最后写入文件,可以使用stat命令:

stat /var/log/wtmp

为了反向打印输出,可以将last的输出通过管道传递到GNU tac(与cat相反),如下所示:

last | tac

16

您也可以lastlog在Linux上使用command 命令。在查看用户登录日志时,它为日期范围提供了更精细的控制。

摘自lastlog手册页

   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)中的所有用户提供最后的日志时间戳记

谢谢(你的)信息; 请修改您的答案以提及这一点。还要注意,问题是关于CentOS,而不是AIX。
斯蒂芬·基特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.