深入理解 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

相关推荐
珊珊而川43 分钟前
ChatPromptTemplate创建方式比较
服务器·langchain
chxii2 小时前
5java集合框架
java·开发语言
欧先生^_^2 小时前
Linux内核可配置的参数
linux·服务器·数据库
若风的雨2 小时前
【deekseek】P2P通信路由过程
服务器·网络协议·p2p
海尔辛3 小时前
学习黑客5 分钟读懂Linux Permissions 101
linux·学习·安全
Python私教3 小时前
征服Rust:从零到独立开发的实战进阶
服务器·开发语言·rust
yychen_java3 小时前
R-tree详解
java·算法·r-tree
JANYI20183 小时前
嵌入式设计模式基础--C语言的继承封装与多态
java·c语言·设计模式
王RuaRua4 小时前
[数据结构]5. 栈-Stack
linux·数据结构·数据库·链表
xrkhy4 小时前
反射, 注解, 动态代理
java