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