last reboot仅记录系统启动时间而非执行者,因其数据源自/var/log/wtmp,由内核自动写入;要追溯具体操作人,需结合auditd、journalctl、shell历史及sudo日志综合分析。

Linux 中 last 命令本身不记录“谁执行了重启操作”,它只记录系统启动事件(即 reboot 登录项),这个条目由内核在每次启动时自动写入,和具体哪个用户发起的重启无关。所以严格来说,last reboot 显示的是“系统何时重启过”,而不是“管理员何时执行了 reboot 命令”。
查看系统重启时间点(最常用)
运行以下命令可列出所有已知的重启事件,按时间倒序排列:
-
last reboot—— 直接筛选出所有重启记录 -
last -x | grep reboot—— 使用-x显式包含关机/重启事件,再过滤 -
last -n 10 reboot—— 只显示最近 10 次重启
输出示例:
reboot system boot 5.15.0-107-generic Tue Jul 28 09:12 - 11:25 (02:13)reboot system boot 5.15.0-107-generic Mon Jul 27 14:33 - 09:12 (18:39)
其中 Tue Jul 28 09:12 是本次启动时间,“still running” 表示当前仍在运行;若显示持续时间(如 (02:13)),说明该次启动后又关机了。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
追溯是谁触发的重启(需额外日志)
/var/log/wtmp 不保存操作者信息,但系统通常会把 reboot、shutdown 等命令记入审计日志或 shell 历史中:
- 检查 root 用户的命令历史:
sudo cat /root/.bash_history | grep -E 'reboot|shutdown|init 6|systemctl reboot' - 启用 auditd 的系统可查审计日志:
sudo ausearch -m execve -i | grep -E 'reboot|shutdown' | tail -10 - 查看 systemd 日志(如果使用 systemctl):
journalctl --since "2 days ago" | grep -i "reboot\|shut down\|starting at"
注意:shell 历史依赖用户是否保留历史、是否被清空;auditd 需提前配置才有效;journalctl 记录更完整但默认可能只保留近期日志。
区分正常重启与异常断电
如果系统疑似因断电重启,last 输出中不会体现“异常”,但可通过以下线索辅助判断:
- 前一次
reboot条目前,缺少对应的shutdown或runlevel记录 - 用
last -x查看是否有runlevel切换,正常关机应有runlevel 0或6条目 - 检查
dmesg -T | head -20,看启动时是否有 “Kernel panic”、“ACPI: Power Button” 或硬件复位痕迹
补充说明
last 读取的是二进制文件 /var/log/wtmp,它只记录事件类型和时间,不记录调用者 UID、PID 或命令参数。要真正审计“谁在何时执行了重启”,必须依赖:shell 历史 + auditd 审计 + systemd journal + sudo 日志(如 /var/log/auth.log) 的组合分析,而非仅靠 last 单一命令。

















