Linux 常用命令 - last 【显示历史登录用户列表】
简介
last 命令源自英文单词 “last”,意为“最后”。该命令用于显示系统中用户的登录和注销记录,以及系统的重启和关机记录。它通过读取 /var/log/wtmp
文件来获取这些信息,wtmp
文件记录了所有用户的登录和注销活动。
使用方式
last [options] [username...] [tty...]
lastb [options] [username...] [tty...]
常用选项
-a, --hostlast
:在最后一列显示主机名称。与--dns
选项配合使用时比较有用。-d, --dns
:对于非本地登录,Linux 除了存储远程主机的名称外,还会保存其 IP 地址。使用此选项会将 IP 地址转换为主机名显示。-f, --file file
:指定一个特定的文件供last
命令使用,而非默认的/var/log/wtmp
文件。此选项可以多次出现,所有指定的文件都会被依次处理。-F, --fulltimes
:以完整格式显示登录和退出的日期与时间。-i, --ip
:与--dns
类似,但显示的是主机的 IP 地址而不是主机名。-number; -n, --limit number
:指定last
命令最多显示的记录行数。-p, --present time
:显示指定时间点登录的用户。该选项等同于同时使用--since
和--until
选项,指定相同的时间。-R, --nohostname
:不显示主机名字段。-s, --since time
:显示自指定时间以来的登录状态。这对于查找某一时刻哪些用户在线特别有用,通常会与--until
选项一起使用。-t, --until time
:显示指定时间之前的登录状态。--time-format format
:定义输出的时间戳格式,可选值有notime
、short
、full
或iso
。notime
表示不显示时间戳;short
为默认格式;full
与--fulltimes
选项一样,显示完整时间;iso
则以ISO-8601
格式显示时间戳,该格式包含时区信息,适用于在系统外部进行打印记录分析。-w, --fullnames
:显示完整的用户名和域名。-x, --system
:显示系统关机记录以及运行级别变化记录。
时间格式
下面是 time
参数支持的各种格式。可以使用这些格式来指定特定的日期或时间,便于查询登录状态:
格式 | 说明 |
---|---|
YYYYMMDDhhmmss | 年月日时分秒 形式。 |
YYYY-MM-DD hh:mm:ss | 年-月-日 时:分:秒 形式。 |
YYYY-MM-DD hh:mm | 年-月-日 时:分 形式,(秒数自动补为 00)。 |
YYYY-MM-DD | 年-月-日 形式,(时间自动补为 00:00:00)。 |
hh:mm:ss | 时:分:秒 形式,(日期自动设为今天)。 |
hh:mm | 时:分 形式,(日期自动设为今天,秒数补为 00)。 |
now | 表示当前时间。 |
yesterday | 表示昨天(时间自动设为 00:00:00)。 |
today | 表示今天(时间自动设为 00:00:00)。 |
tomorrow | 表示明天(时间自动设为 00:00:00)。 |
+5min | 表示从当前时间起加上 5 分钟。 |
-5days | 表示从当前时间起减去 5 天。 |
参考示例
1. 显示登录记录
last
直接使用 last
可以显示出所有被记录的用户登录信息:
jay@jaylinuxlenovo:~/test$ last
jay pts/6 :pts/0:S.0 Sun Feb 23 21:58 - 22:38 (00:39)
jay pts/6 :pts/5:S.0 Sun Feb 23 21:25 - 21:27 (00:01)
jay pts/1 :pts/0:S.0 Mon Feb 10 10:52 - 10:52 (00:00)
jay pts/1 127.0.0.1 Sun Feb 9 15:41 - 02:00 (10:19)
jay tty1 Sun Feb 9 15:37 still logged in
jay pts/0 127.0.0.1 Sun Feb 9 15:01 - 15:41 (00:39)
reboot system boot 5.15.0-131-gener Sun Feb 9 14:44 still running
jay pts/5 127.0.0.1 Thu Feb 6 17:07 - 17:07 (00:00)
......
2. 显示指定用户的登录记录
last username
使用 last
加用户名可以显示指定用户的登录记录:
jay@jaylinuxlenovo:~/test$ last jay
jay pts/6 :pts/0:S.0 Sun Feb 23 21:58 - 22:38 (00:39)
jay pts/6 :pts/5:S.0 Sun Feb 23 21:25 - 21:27 (00:01)
jay pts/1 :pts/0:S.0 Mon Feb 10 10:52 - 10:52 (00:00)
jay pts/1 127.0.0.1 Sun Feb 9 15:41 - 02:00 (10:19)
jay tty1 Sun Feb 9 15:37 still logged in
jay pts/0 127.0.0.1 Sun Feb 9 15:01 - 15:41 (00:39)
......
3. 显示最后 5 条登录记录
last -n 5
使用 -n
选项可以指定输出的最多行数:
jay@jaylinuxlenovo:~/test$ last -n 5
jay pts/6 :pts/0:S.0 Sun Feb 23 21:58 - 22:38 (00:39)
jay pts/6 :pts/5:S.0 Sun Feb 23 21:25 - 21:27 (00:01)
jay pts/1 :pts/0:S.0 Mon Feb 10 10:52 - 10:52 (00:00)
jay pts/1 127.0.0.1 Sun Feb 9 15:41 - 02:00 (10:19)
jay tty1 Sun Feb 9 15:37 still logged in
wtmp begins Fri Oct 21 07:47:59 2022
4. 以完整格式显示登录和退出的日期与时间
last -F
使用 -F
选项可以以完整格式显示登录和退出的日期与时间:
jay@jaylinuxlenovo:~/test$ last -F -n 5
jay pts/6 :pts/0:S.0 Sun Feb 23 21:58:55 2025 - Sun Feb 23 22:38:21 2025 (00:39)
jay pts/6 :pts/5:S.0 Sun Feb 23 21:25:24 2025 - Sun Feb 23 21:27:17 2025 (00:01)
jay pts/1 :pts/0:S.0 Mon Feb 10 10:52:27 2025 - Mon Feb 10 10:52:32 2025 (00:00)
jay pts/1 127.0.0.1 Sun Feb 9 15:41:17 2025 - Mon Feb 10 02:00:21 2025 (10:19)
jay tty1 Sun Feb 9 15:37:52 2025 still logged in
wtmp begins Fri Oct 21 07:47:59 2022
注意事项
last
命令依赖于/var/log/wtmp
文件,如果该文件被删除或损坏,last
命令将无法正常工作。last
命令显示的信息可能会受到系统日志轮换策略的影响,较旧的记录可能会被删除。- 在某些系统中,
last
命令可能需要管理员权限才能查看所有用户的登录记录。