centos8.5自动重启排查

CentOS 8.5 机器自动重启,核心目标只有一个:
判断这是“主动重启(panic / watchdog / 电源)”还是“被动重启(人为 / 系统更新)”,并尽量拿到重启前最后一刻的内核证据

在 Linux 世界里,真相通常藏在三层:

  • 内核(kernel)
  • 系统日志(journald / rsyslog)
  • 硬件/固件(IPMI、BMC、ACPI)

下面按从最可靠 → 最容易丢失的顺序来查。


1.明确:这次 reboot 是不是 kernel panic

先看 系统是“crash”还是“reboot”

1
last -x | head

关注几种关键记录:

  • crash → 内核 panic 或硬件致命错误
  • reboot → 正常路径(systemctl reboot / watchdog)
  • shutdown → 人为或脚本触发

如果你看到类似:

crash   system boot  4.18.0-348.el8.x86_64

基本可以断定:内核层出了事


2. 使用 journalctl 精准定位“上一次启动之前”的日志

systemd 的一个巨大优点:
日志按“启动序列”分桶保存


2.1 查看系统保存了多少次启动记录

1
journalctl --list-boots

输出示例:

-2  9c8e... Tue 2026-01-19 02:01:33 JST — Tue 2026-01-19 02:05:10 JST
-1  4b3a... Tue 2026-01-19 02:05:45 JST — Tue 2026-01-19 02:06:02 JST
 0  e12f... Tue 2026-01-19 02:06:15 JST — now

重点关注:

  • -1:发生异常 reboot 的那一轮
  • -2:如果 -1 太短,说明是硬断电或 panic

2.2 查看“重启前”的内核日志

1
journalctl -b -1 -k

这是最关键的一条命令,只看内核(-k)。

你要重点搜这些关键词:

1
journalctl -b -1 -k | egrep -i "panic|oops|bug|watchdog|hung|fatal|nmi"

常见致命信号包括:

  • kernel panic - not syncing
  • BUG: soft lockup
  • watchdog: BUG: soft lockup
  • NMI watchdog: Hard LOCKUP
  • Out of memory: Kill process
  • Machine Check Exception

3.开启持久化 journal(防止断电丢日志)

1
2
mkdir -p /var/log/journal
systemctl restart systemd-journald

确认:

1
journalctl --disk-usage

4.启用 kdump(捕获 panic 内核)

1
2
dnf install -y kexec-tools
systemctl enable --now kdump

一旦 panic:
👉 /var/crash/ 会留下完整内核转储