菜鸟科技网

last 命令详解

last 命令详解

last 命令是什么?

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

last 命令详解-图1
(图片来源网络,侵删)

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 显示指定时间之前的记录,格式为 YYYYMMDDHHMMSSYYYY-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)
空闲时间 (不常用)终端的空闲时间,通常为空。

特殊行:

last 命令详解-图2
(图片来源网络,侵删)
  • 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 命令详解-图3
(图片来源网络,侵删)
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 命令及其常用选项,对于日常的系统维护和安全工作至关重要。

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