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

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

last 命令

用法:

last 选项 \<用户名\>... \...

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

选项:

-<数字> 显示行数

-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 选项 \<用户名\>... \...

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

选项:

-<数字> 显示行数

-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 1 或 last -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 定义输出时间戳的格式(notime、short、full 或 iso)。 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

相关推荐
我是人✓6 分钟前
Spring框架的事务管理
java·后端·spring
Huangjin007_6 分钟前
【Linux 系统篇(二十八)】文件(五):Ext 系列文件系统(下):Ext2块组结构,inode与文件寻址原理
linux·运维·服务器
javachen__20 分钟前
JsonView:一套VO实现多角色字段返回
java·linux·服务器
睡一觉就好了。30 分钟前
TcpSocket
linux
小陈运维34 分钟前
使用kubeadm初始化IPV4/IPV6集群
linux·docker·云原生·容器·kubernetes
行者-全栈开发36 分钟前
SpringBoot 生产环境踩坑实录:10个真实故障案例与教训
java·spring boot·后端
李福春39 分钟前
斗破Google ADK Java苍穹-第7境斗皇-御天地-Harness治理
java·人工智能·python·深圳同盟·腾讯云架构师技术同盟·adk java·harness 治理
Wang's Blog40 分钟前
Java 项目部署之 Docker工具快速入门: 容器命令练习:创建、改文件、重启到删除的完整闭环
java·开发语言·docker
我是人✓41 分钟前
Java面向对象核心特性深度解析
java·前端·算法
Wx-bishekaifayuan1 小时前
springboot线上中医药养生平台管理系统36753-计算机课程设计、毕业设计
java·spring boot·后端·spring·课程设计·express·旅游