2026-10-21 14:23:24
last 命令是 Linux 中用于显示用户登录和注销记录、系统重启和关机记录的工具,通过读取 /var/log/wtmp 文件获取信息,支持多种选项实现灵活查询。
基本功能
显示所有登录记录:直接输入 last 命令,会列出所有用户的登录、注销信息,以及系统重启(reboot)和关机(shutdown)记录。输出包含用户名、终端设备(如 pts/6、tty1)、远程主机(若有)、登录时间、退出时间(或“still logged in”表示仍在线)及会话时长。
显示指定用户记录:通过 last [username] 可查询特定用户的登录历史,例如 last jay 仅显示用户“jay”的记录。
常用选项及作用
控制显示行数:-n [number] 或 --limit [number] 限制输出行数,如 last -n 5 仅显示最近 5 条记录。
时间格式调整:
-F 或 --fulltimes:以完整格式显示日期和时间(如 Sun Feb 23 21:58:55 2025)。
--time-format [format]:自定义时间戳格式,可选值包括:
notime:不显示时间。
short(默认):简略格式(如 Feb 23 21:58)。
full:与 -F 相同,显示完整时间。
iso:ISO-8601 格式(含时区,如 2025-02-23T21:58:55+08:00)。
主机信息显示:
-a 或 --hostlast:在最后一列显示主机名(需配合 --dns 使用)。
-d 或 --dns:将非本地登录的 IP 地址解析为主机名。
-i 或 --ip:显示主机的 IP 地址而非主机名。
-R 或 --nohostname:隐藏主机名字段。
系统事件记录:-x 或 --system 显示系统关机、运行级别变化等记录(如 reboot system boot)。
时间范围筛选:
-s [time] 或 --since [time]:显示指定时间后的记录。
-t [time] 或 --until [time]:显示指定时间前的记录。
-p [time]:等价于同时使用 --since 和 --until 指定同一时间点。
自定义日志文件:-f [file] 或 --file [file] 指定非默认的 /var/log/wtmp 文件(如 last -f /var/log/btmp)。
时间参数格式
绝对时间:支持 YYYYMMDDhhmmss、YYYY-MM-DD hh:mm:ss、YYYY-MM-DD 等格式。例如:
20250223215855 表示 2025 年 2 月 23 日 21:58:55。
2025-02-23 21:58 表示同一天 21:58(秒数补为 00)。
相对时间:使用 now(当前时间)、yesterday(昨天 00:00:00)、+5min(当前时间加 5 分钟)、-5days(当前时间减 5 天)等。例如:
last -s yesterday 显示昨天至今的记录。
last -t +1hour 显示 1 小时前的记录。
注意事项
依赖文件完整性:last 依赖 /var/log/wtmp 文件,若文件被删除或损坏(如手动清理或系统故障),历史记录将丢失。
日志轮换影响:系统日志轮换策略(如 logrotate)可能定期删除旧记录,导致 last 无法查询更早的历史。
权限要求:查询所有用户记录通常需要管理员权限(root),普通用户可能仅能看到自身记录。
示例场景
查询最近登录的 10 条记录:last -n 10。
查看用户“root”的完整时间格式记录:last -F root。
筛选今天 10:00 至 12:00 的登录记录:last -s "today 10:00" -t "today 12:00"。
显示系统关机事件:last -x | grep reboot。