last 是一个非常有用的命令行工具,它显示用户最近登录系统的记录,这些信息对于系统管理员排查问题、审计安全事件,或者普通用户查看自己的登录历史都非常有帮助。

last 命令的基本用法
在终端中直接输入 last,然后按回车。
last
你会看到类似下面格式的输出:
wilsontype ttys000 Fri Dec 15 10:30 still logged in
wilsontype console Fri Dec 15 10:29 still logged in
wilsontype ttys002 Thu Dec 14 18:15 - 18:22 (00:07)
wilsontype ttys001 Thu Dec 14 17:58 - 18:15 (00:17)
wilsontype console Thu Dec 14 17:57 still logged in
reboot ~ Thu Dec 14 17:57 still running
...
输出字段的详细解释
last 命令的每一行都代表一次登录或重启事件,各字段含义如下:
| 字段 | 示例 | 解释 |
|---|---|---|
| 用户名 | wilsontype |
登录系统的用户名。reboot 表示系统重启,shutdown 表示系统关机。 |
| 终端 | ttys000, console |
用户登录的终端。 • console: 物理控制台(直接连接键盘和显示器)。• ttysXXX: 虚拟终端(通过 macOS 的“终端”应用打开)。• ssh: 通过 SSH 远程登录。 |
| 登录时间 | Fri Dec 15 10:30 |
用户登录的时间。 |
| 退出时间 | - 18:22, still logged in |
用户退出的时间。 • : 表示用户仍在登录状态。 • still logged in: 明确表示用户仍然在线。 |
| 持续时间 | (00:07) |
用户本次会话持续了多长时间,如果用户仍在登录,这个字段可能为空。 |
常用选项和参数
last 命令支持很多选项,可以让你定制输出内容。

按用户名过滤
只想查看特定用户的登录记录,可以在 last 后面跟上用户名。
# 查看用户 'wilsontype' 的登录记录 last wilsontype # 查看用户 'root' 的登录记录 last root
按终端名过滤
想查看特定终端的登录活动,例如只查看 SSH 登录。
# 查看所有通过 SSH 登录的记录 last ssh
-n 或 -l 选项:限制显示的行数**
这是最常用的选项之一,用于只显示最近的 N 条记录。
# 只显示最近 5 条登录记录 last -n 5 # 或者使用 -l (limit) last -l 5
-f 选项:指定日志文件**
last 命令默认读取 /var/log/wtmp 文件来获取历史数据,你可以使用 -f 选项来读取其他文件,或者查看更早的日志(如果存在)。

# 读取 /var/log/wtmp 文件(默认行为) last -f /var/log/wtmp # macOS 通常会将旧的 wtmp 文件压缩为 .tgz 格式,/var/log/wtmp.1 # 你可以使用 zcat 或 gzcat 来解压并查看 zcat /var/log/wtmp.1 | last # 或者直接使用 last 的 -f 选项,它支持 gzip 压缩的文件 last -f /var/log/wtmp.1
-t 选项:指定时间点**
查看在某个特定时间点之前或之后的登录记录。
# 查看在 '2025-12-15 10:00:00' 之前的登录记录 last -t 2025-12-15100000
-i 选项:忽略 IP 地址**
对于通过 SSH 登录的用户,last 默认会显示远程主机的 IP 地址,使用 -i 可以忽略这些 IP 地址,使输出更简洁。
last -i
-x 选项:显示关机和重启记录**
默认情况下,last 只显示用户登录,加上 -x 选项,它会同时显示系统的关机和重启记录。
last -x
macOS 与 Linux 的细微差别
虽然 last 命令在 macOS 和 Linux 上非常相似,但有几个关键区别需要注意:
-
日志文件位置:
- Linux: 通常使用
/var/log/wtmp和/var/log/btmp(记录失败的登录)。 - macOS: 同样使用
/var/log/wtmp,但没有/var/log/btmp文件,macOS 使用utmpx和wtmpxAPI 来管理这些日志,文件格式可能略有不同。
- Linux: 通常使用
-
失败登录记录:
- 在 Linux 上,
lastb命令用于查看失败的登录尝试,它读取/var/log/btmp。 - 在 macOS 上,没有
lastb命令,失败的登录记录通常不会被记录在wtmp文件中,或者记录方式不同,如果你需要审计安全事件,最好结合系统日志(/var/log/system.log或使用log show命令)来查看。
- 在 Linux 上,
-
log show命令:- macOS 推荐使用
log show命令来查看系统日志,它功能更强大,是现代 macOS 的首选日志查看工具,你可以用它来查找用户登录事件。# 查看最近的用户登录活动 log show --predicate 'subsystem == "com.apple.system.login"' --debug --last 1d
- macOS 推荐使用
实际应用场景
- 安全审计: 发现是否有不明用户在非工作时间登录过你的系统。
- 故障排查: 当你感觉系统运行不正常时,可以查看最近的登录记录,确认是否有可疑活动。
- 个人使用: 想不起来自己上次是什么时候登录的,或者忘记在哪台设备上登录过,可以用
last来查看。 - 确认会话: 确认你是否还在之前的登录会话中(
still logged in)。
| 命令 | 功能 |
|---|---|
last |
显示所有用户的登录记录 |
last username |
显示指定用户的登录记录 |
last -n 10 |
显示最近 10 条登录记录 |
last ssh |
显示所有 SSH 登录记录 |
last -f /var/log/wtmp.1 |
读取旧的日志文件 |
last 是 macOS 系统管理和日常使用中的一个利器,掌握它能让你更好地了解系统的使用情况。
