菜鸟科技网

Mac终端last命令如何查看历史登录记录?

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

Mac终端last命令如何查看历史登录记录?-图1
(图片来源网络,侵删)

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 命令支持很多选项,可以让你定制输出内容。

Mac终端last命令如何查看历史登录记录?-图2
(图片来源网络,侵删)

按用户名过滤

只想查看特定用户的登录记录,可以在 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 选项来读取其他文件,或者查看更早的日志(如果存在)。

Mac终端last命令如何查看历史登录记录?-图3
(图片来源网络,侵删)
# 读取 /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 上非常相似,但有几个关键区别需要注意:

  1. 日志文件位置:

    • Linux: 通常使用 /var/log/wtmp/var/log/btmp (记录失败的登录)。
    • macOS: 同样使用 /var/log/wtmp,但没有 /var/log/btmp 文件,macOS 使用 utmpxwtmpx API 来管理这些日志,文件格式可能略有不同。
  2. 失败登录记录:

    • 在 Linux 上,lastb 命令用于查看失败的登录尝试,它读取 /var/log/btmp
    • 在 macOS 上,没有 lastb 命令,失败的登录记录通常不会被记录在 wtmp 文件中,或者记录方式不同,如果你需要审计安全事件,最好结合系统日志(/var/log/system.log 或使用 log show 命令)来查看。
  3. log show 命令:

    • macOS 推荐使用 log show 命令来查看系统日志,它功能更强大,是现代 macOS 的首选日志查看工具,你可以用它来查找用户登录事件。
      # 查看最近的用户登录活动
      log show --predicate 'subsystem == "com.apple.system.login"' --debug --last 1d

实际应用场景

  • 安全审计: 发现是否有不明用户在非工作时间登录过你的系统。
  • 故障排查: 当你感觉系统运行不正常时,可以查看最近的登录记录,确认是否有可疑活动。
  • 个人使用: 想不起来自己上次是什么时候登录的,或者忘记在哪台设备上登录过,可以用 last 来查看。
  • 确认会话: 确认你是否还在之前的登录会话中(still logged in)。
命令 功能
last 显示所有用户的登录记录
last username 显示指定用户的登录记录
last -n 10 显示最近 10 条登录记录
last ssh 显示所有 SSH 登录记录
last -f /var/log/wtmp.1 读取旧的日志文件

last 是 macOS 系统管理和日常使用中的一个利器,掌握它能让你更好地了解系统的使用情况。

分享:
扫描分享到社交APP
上一篇
下一篇