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

相关推荐
yuzhiboyouye17 小时前
java线程池
java·开发语言·firefox
网络工程小王18 小时前
【LCEL 链式调用详解】调用篇-2
java·服务器·前端·数据库·人工智能
搬砖的小码农_Sky18 小时前
Linux操作系统:Ubuntu和Debian的区别
linux·ubuntu·debian
Zzzzmo_18 小时前
【JavaEE】文件操作和IO
java·java-ee·io·文件操作·file·流对象
江湖有缘18 小时前
基于Ubuntu系统Docker部署Note Mark:从安装到配置全流程
linux·ubuntu·docker
NE_STOP18 小时前
Redis-持久化之RDB
java
xhbh66619 小时前
路由端口转发常见应用场景有哪些?有什么?
服务器·ip·端口转发·ip地址·流量转发·建站
前端之虎陈随易19 小时前
2年没用Nodejs了,Bun很香
linux·前端·javascript·vue.js·typescript
宁小法19 小时前
Linux批量删除文件
linux·服务器·批量·删除文件
苍煜19 小时前
SpringBoot AOP切面编程精讲:实现方式、Spring区别及与自定义注解生产实战
java·spring boot·spring