找出用户登录 Linux 服务器的时间

and*_*s-h 3 login log-files syslog accounting

在我的 Debian Squeeze 服务器中,所有用户登录和注销都记录在文件中 /var/log/auth.log

Jan 28 07:11:06 xen8 sshd[29826]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 28 07:33:47 xen8 sshd[29826]: pam_unix(sshd:session): session closed for user root
Jan 28 09:45:58 xen8 sshd[14374]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 28 09:47:36 xen8 sshd[14374]: pam_unix(sshd:session): session closed for user root
Jan 29 07:37:48 xen8 sshd[24940]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 29 07:38:11 xen8 sshd[24940]: pam_unix(sshd:session): session closed for user root
Jan 29 08:35:13 xen8 sshd[25707]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 29 08:37:06 xen8 sshd[25707]: pam_unix(sshd:session): session closed for user root
Jan 29 16:59:39 xen8 sshd[30725]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 29 17:00:58 xen8 sshd[30725]: pam_unix(sshd:session): session closed for user root
Jan 29 17:11:17 xen8 sshd[30832]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jan 29 18:11:37 xen8 sshd[30832]: pam_unix(sshd:session): session closed for user root
Run Code Online (Sandbox Code Playgroud)

通过进程ID,应该能够找到匹配的登录/注销,然后可以计算时间。但是我的 sed/awk 技能非常有限,也许还有一个现成的脚本/工具可以完成这项任务?有没有一种简单的方法来提取用户登录的时间?要么是总数(每个文件),要么是一些漂亮的图形?

Dan*_* t. 7

ac实用程序将为您提供有关用户登录的统计信息。例如,要查看名为 user1 的用户在系统上的总秒数/分钟/小时数 -

  ac -d user1
Run Code Online (Sandbox Code Playgroud)

输出

 Jan 22  total        4.19
 Jan 23  total        8.01
 Jan 24  total        7.84
 Jan 25  total        6.79
 Jan 28  total        7.37
 Jan 29  total        8.69
 Today   total        7.15
Run Code Online (Sandbox Code Playgroud)

  • 知道 ac 是由 `psacct` 包提供的,也许很好,因为它不是基础的一部分。 (2认同)

Mic*_*ton 5

试试这个last命令。这应该会显示您正在寻找的所有信息。