last 命令详解
last 命令是什么?
last 命令从系统日志文件(通常是 /var/log/wtmp)中读取信息,并显示自该文件创建以来所有用户的登录和注销记录。wtmp 文件是一个二进制文件,记录了每次用户登录、注销、系统关机、重启等事件。

last 命令就是一份系统的“登录历史账本”,管理员可以用来追踪用户活动、排查安全问题或分析系统使用情况。
语法
last [选项] [用户名] [终端]
- 选项:用于控制输出格式和行为。
- 用户名:可选参数,如果指定,
last只会显示该特定用户的登录记录。 - 终端:可选参数,如果指定,
last只会显示从特定终端(如pts/0,tty1)的登录记录。
常用选项
| 选项 | 全称 | 描述 |
|---|---|---|
-n 或 |
--line |
只显示最近 N 条记录。last -n 10 显示最近10条记录。 |
-a |
--hostlast |
在登录行的最后一列显示主机名,默认情况下,主机名显示在用户名之后。 |
-d |
--dns |
将 IP 地址解析为主机名,这可能会使命令执行变慢,因为需要查询 DNS。 |
-f |
--file |
指定一个非默认的日志文件来读取。last -f /var/log/btmp 查看失败的登录尝试。 |
-i |
--ip |
显示 IP 地址而不是主机名。 |
-p |
--preserve |
显示旧的、不完整的登录会话(如果日志中存在)。 |
-R |
--nohostname |
不显示主机名。 |
-t |
--time |
显示指定时间之前的记录,格式为 YYYYMMDDHHMMSS 或 YYYY-MM-DDHH:MM:SS。 |
-w |
--ip-lookup |
与 -i 类似,但会尝试将 IP 反向解析为主机名。 |
-x |
--system |
显示系统关机、重启和运行级别改变的事件。 |
输出字段详解
last 命令的默认输出格式非常丰富,每一列都有特定的含义,下面是一个典型的输出行示例:
root pts/0 192.168.1.100 Wed May 15 09:30 still logged in
reboot system boot 5.4.0-65-generic Wed May 15 09:15 (00:10)
user1 pts/1 10.0.0.55 Tue May 14 16:45 - 17:01 (00:16)
让我们逐列分析:
| 字段 | 描述 | 示例 |
|---|---|---|
| 用户名 | 登录系统的用户名。 | root, user1 |
| 终端 | 用户登录所使用的终端。 | pts/0 (伪终端,SSH/远程登录), tty1 (本地物理控制台) |
| 远程主机/来源 | 用户从哪里登录,如果是本地登录,通常显示为 console,对于远程登录,显示 IP 地址或主机名。 |
168.1.100, 0.0.55 |
| 登录时间 | 用户登录的日期和时间。 | Wed May 15 09:30 |
| 注销时间 | 用户注销的时间,如果用户仍在登录,这里会显示 still logged in,如果是 crash,表示系统非正常关机。 |
17:01, still logged in |
| 会话时长 | 用户登录的持续时间,格式为 (HH:MM) 或 (days, HH:MM)。 |
(00:10), (00:16) |
| 空闲时间 | (不常用)终端的空闲时间,通常为空。 |
特殊行:

reboot行:记录了系统的每次重启。system boot表示系统启动,system shutdown表示系统关机。reboot system boot ...:系统启动事件。shutdown system down ...:系统关机事件。
实用示例
示例 1:查看所有登录记录
这是最基本的使用方法,显示所有用户的所有登录记录。
last
示例 2:只显示最近的10条记录
当系统运行时间很长时,输出会非常多,使用 -n 选项可以限制显示的行数。
last -n 10 # 或者使用 # last -5
示例 3:查看特定用户的登录历史
如果你想追踪某个特定用户的活动,可以指定用户名。
last john
示例 4:查看特定终端的登录历史
你想查看在 tty1(本地物理控制台)上的所有登录活动。

last tty1
示例 5:查看系统重启和关机历史
使用 -x 选项可以查看系统级别的事件,如重启和关机。
last -x
示例 6:查看失败的登录尝试
last 默认查看的是 /var/log/wtmp,它记录了成功的登录,而失败的登录记录在 /var/log/btmp 文件中,要查看失败记录,需要使用 -f 选项。
last -f /var/log/btmp
注意:
btmp文件默认为空,并且只有 root 用户才能读取,这个命令对于安全审计非常有用。
示例 7:将 IP 地址解析为主机名
默认情况下,last 显示 IP 地址,如果你想看到更友好的主机名,可以使用 -d 或 -w 选项。
last -d
警告:解析 DNS 可能会很慢,特别是当日志中有很多 IP 地址时,并且可能会产生不必要的网络流量。
示例 8:查看特定时间之前的记录
查看 2025年5月14日 18:00 之前的所有登录记录。
last -t 202505141800 # 或者使用更易读的格式 last -t 2025-05-14-18:00
相关文件
last 命令读取的数据源是系统日志文件,了解这些文件有助于更好地理解 last 的工作原理。
| 文件 | 描述 | last 选项 |
|---|---|---|
/var/log/wtmp |
默认文件,记录所有用户的登录、注销、系统关机和重启事件,数据是持续累积的。 | last (默认), last -f /var/log/wtmp |
/var/log/btmp |
二进制文件,记录所有失败的登录尝试(错误的用户名或密码)。 | last -f /var/log/btmp |
/var/log/lastlog |
二进制文件,记录每个用户最后一次成功登录的时间,它不是按时间顺序排列的,而是按用户名索引的,通常由 lastlog 命令使用。 |
无直接对应选项 |
last 是一个简单、快速且功能强大的命令,是系统管理员和安全工程师的瑞士军刀。
- 核心功能:查看
/var/log/wtmp中的用户登录历史。 - 安全审计:通过
last -f /var/log/btmp检查暴力破解等恶意活动。 - 故障排查:通过
last -x检查系统重启时间,以关联问题发生的时间点。 - 用户管理:追踪特定用户的活动,确认其登录时间和地点。
掌握 last 命令及其常用选项,对于日常的系统维护和安全工作至关重要。
