深入理解 Linux 中的 last 和 lastb 命令

在 Linux 系统中,lastlastb 命令是两个非常有用的工具,用于追踪用户登录和登出的历史记录。这两个命令可以帮助系统管理员了解用户的活动情况,以及系统的重启和关机事件。本文将详细介绍这两个命令的使用方法和选项。

last 命令

用法:

last [选项] [<用户名>...] [<tty>...]

显示上次登录用户的列表。

选项:

-<数字> 显示行数

-a, --hostlast 最后一列显示主机名

-d, --dns 将 IP 号转换回主机名

-F, --file <文件> 用指定文件代替 /var/log/wtmp

-F, --fulltimes 打印完整的登录和注销时间和日期

-i, --ip 以数字和点的形式显示 IP 号

-n, --limit <数字> 要显示的行数

-R, --nohostname 不显示主机名字段

-s, --since <时间> 显示从指定时间起的行

-t, --until <时间> 显示到指定时间为止的行

-p, --present <时间> 显示在指定时间谁在场(present)

-w, --fullnames 显示完整的用户名和域名

-x, --system 显示系统关机项和运行级别更改

--time-format <格式> 以指定<格式>显示时间戳:

notime|short|full|iso

-h, --help display this help

-V, --version display version

last 命令通过搜索 /var/log/wtmp 文件(或由 -f 标志指定的文件)来显示自文件创建以来所有用户的登录和登出记录。可以给出一个或多个用户名、/、tty,在这种情况下,last将只显示与这些参数匹配的条目。tty的名称可以缩写,"last 0"与"last tty0"相同。

last 命令捕获到 SIGINT(通常由 Ctrl+C 生成)或 SIGQUIT(通常由 Ctrl+\ 生成)信号时,它会显示已经搜索到的位置;对于 SIGINT 信号,last 然后终止。

伪用户 "reboot" 每次系统重启时都会登录。因此,last reboot 显示了自日志文件创建以来的所有重启日志。

lastb 命令

用法:

lastb [选项] [<用户名>...] [<tty>...]

显示上次登录用户的列表。

选项:

-<数字> 显示行数

-a, --hostlast 最后一列显示主机名

-d, --dns 将 IP 号转换回主机名

-F, --file <文件> 用指定文件代替 /var/log/btmp

-F, --fulltimes 打印完整的登录和注销时间和日期

-i, --ip 以数字和点的形式显示 IP 号

-n, --limit <数字> 要显示的行数

-R, --nohostname 不显示主机名字段

-s, --since <时间> 显示从指定时间起的行

-t, --until <时间> 显示到指定时间为止的行

-p, --present <时间> 显示在指定时间谁在场(present)

-w, --fullnames 显示完整的用户名和域名

-x, --system 显示系统关机项和运行级别更改

--time-format <格式> 以指定<格式>显示时间戳:

notime|short|full|iso

-h, --help display this help

-V, --version display version

lastb 命令的功能与 last 类似,但默认情况下,lastb 列出 /var/log/btmp 文件的内容,该文件包含系统上所有失败的登录尝试。

last lastb 命令选项解释

选项 描述 示例
-n num-n num 显示最近的 num 行登录记录。 last -n 1last -1
-f, --file file 使用指定的文件代替默认的 /var/log/wtmp 文件。 last -f /path/to/file
-F, --fulltimes 打印完整的登录和登出时间及日期。 last -F
-p, --present <time> 显示在指定时间点登录的用户,等同于同时使用 --since--until last -p now
-s, --since <time> 显示自指定时间以来的登录记录。 last -s YYYY-MM-DD
-t, --until <time> 显示直到指定时间的登录记录。 last -t YYYY-MM-DD
--time-format format 定义输出时间戳的格式(notimeshortfulliso)。 last --time-format full

<format>时间格式说明:

时间格式 描述 示例
notime 不打印任何时间戳。 -
short 默认格式,简短的时间戳。 Wed Jan 16 12:34
full 完整的时间戳,与 --fulltimes 选项相同。 Wed Jan 16 12:34:56 +0000
iso ISO-8601 格式的时间戳,包含时区信息。 2024-01-16T12:34:56+00:00

<time>时间参数格式:

时间参数格式 描述 示例
YYYYMMDDhhmmss 完整的日期和时间,精确到秒。 20240116123456
YYYY-MM-DD hh:mm:ss 完整的日期和时间,使用破折号分隔,精确到秒。 2024-01-16 12:34:56
YYYY-MM-DD hh:mm 完整的日期和时间,精确到分钟,秒默认为 00 2024-01-16 12:34
YYYY-MM-DD 完整的日期,时间默认为 00:00:00 2024-01-16
hh:mm:ss 时间,日期默认为当天。 12:34:56
hh:mm 时间,日期默认为当天,秒默认为 00 12:34
now 当前时间。 -
yesterday 昨天的日期,时间默认为 00:00:00 -
today 今天的日期,时间默认为 00:00:00 -
tomorrow 明天的日期,时间默认为 00:00:00 -
+5min 从当前时间起的5分钟后。 -
-5days 从当前时间起的5天前。 -

这些选项和参数使得 last 命令非常灵活,可以根据需要显示不同时间段内的登录记录,以及以不同的格式显示时间戳。

使用举例

从两天前到一天前的记录

last -R -s -2days -t -1days

查看机器启动时间

last --time-format iso reboot|head -n 1

reboot system boot 4.19.91-26.an8.x 2025-02-05T10:00:07+08:00 still running

top -n 1|head -n 1

top - 10:09:27 up 21 days, 9 min, 1 user, load average: 0.01, 0.00, 0.00

相关推荐
Cyanto8 分钟前
Java并发编程面试题
java·开发语言·面试
在未来等你20 分钟前
互联网大厂Java求职面试:AI大模型与云原生技术的深度融合
java·云原生·kubernetes·生成式ai·向量数据库·ai大模型·面试场景
sss191s36 分钟前
Java 集合面试题从数据结构到 HashMap 源码剖析详解及常见考点梳理
java·开发语言·数据结构
LI JS@你猜啊44 分钟前
window安装docker
java·spring cloud·eureka
书中自有妍如玉1 小时前
.net 使用MQTT订阅消息
java·前端·.net
风铃儿~1 小时前
Spring AI 入门:Java 开发者的生成式 AI 实践之路
java·人工智能·spring
斯普信专业组1 小时前
Tomcat全方位监控实施方案指南
java·tomcat
IT界小黑的对象1 小时前
virtualBox部署ubuntu22.04虚拟机 NAT+host only 宿主机ping不通虚拟机
linux·运维·服务器
SilentCodeY1 小时前
Ubuntu 系统通过防火墙管控 Docker 容器
linux·安全·ubuntu·系统防火墙
忆雾屿2 小时前
云原生时代 Kafka 深度实践:06原理剖析与源码解读
java·后端·云原生·kafka