首页/系统/信创系统运维速查/排查机器何时重启及原因
常见问题65 条

排查机器何时重启及原因

排查「什么时候重启的、为什么重启」:用 last -x、who -b 与 journalctl --list-boots 对照关机日志,判断正常重启还是断电复位。

信创系统运维速查系统更新于 2026-10-13

排查重启要靠时间线

排查「什么时候重启的、为什么重启」,核心是把三条信息拼成一条时间线:启动时间(who -b)、每次启动的区间(journalctl --list-boots)、上一次启动周期末尾的日志(journalctl -b -1)。如果末尾日志里有完整的 systemd 关机流程,就是正常重启;如果日志在某个时间点直接断掉、紧接着就是新启动,则更像断电或硬件复位。

基本信息

启动时间who -b、uptime -s
重启与关机历史last -x reboot shutdown
启动区间journalctl --list-boots
上次关机日志journalctl -b -1
权限要求普通用户可查部分信息,完整日志需 root 或 systemd-journal 组

典型使用场景

  • 业务中断后确认机器的实际重启时间与原因
  • 排查重启导致配置被还原的变更时间点
  • 配合带外管理(IPMI/BMC)日志判断是否断电复位
  • 核查是否存在无人知情的重启
  • 审计前统一校准时区,避免时间线整体偏移

查证命令

查证命令
who -b                                   # 上次启动时间
uptime -s                                # 开机时刻,脚本友好格式
last -x reboot shutdown | head -10       # 重启与关机历史记录
journalctl --list-boots | tail -5        # 各次启动区间
journalctl -b -1 --no-pager | tail -30   # 上一次启动周期末尾的日志
timedatectl                              # 确认时区,避免时间线偏移
grep -i storage /etc/systemd/journald.conf   # journal 是否持久化
# 与变更记录、平台事件、带外管理日志交叉核对

重启类型判读

类型日志特征后续动作
正常重启含 systemd 关机与停止单元记录核对是谁执行了重启
断电或复位无关机记录,日志断点后接新启动查带外管理与机房供电记录
内核崩溃结合 kdump 转储或看门狗记录分析转储或查硬件告警
历史记录缺失journal 未持久化先开启持久化再谈回溯
journal 未持久化时,重启前的日志会随内存一起消失:需要回溯历史的机器要先把日志持久化配置好,否则排查从一开始就缺材料。
排查前先核对时区与时钟同步:时间线整体偏移会让系统日志、平台事件与人工记录对不上,结论很容易做错。

易错点

  • 只看 who -b 就下结论:需要结合上一次启动周期末尾日志才能区分正常重启与断电
  • 时区或时钟未同步:时间线整体偏移,日志与业务记录对不上
  • journal 未持久化却指望查到历史:重启前的日志已经丢失,先改配置再排查
  • 忽略带外管理日志:断电、硬件复位这类事件在系统日志里看不到,要查 BMC 或 IPMI
  • 把计划内重启当故障排查:先与变更记录和运维人员交叉核对

数据来源与参考

  • man 1 last
  • man 1 journalctl
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌