Linux系统重启可精准溯源:先用who -b、last reboot、uptime确认重启时间;再通过journalctl查systemd日志中的错误与关键词;结合dmesg分析内核级硬件、OOM等问题;最后用/var/log/messages/syslog交叉验证。

Linux系统重启不是随机发生的,每次重启前系统都会在日志中留下明确线索。关键不在于“有没有日志”,而在于“看哪几处、查什么关键词、怎么串联证据”。
从启动时间反推重启发生点
先确认重启是否真实发生、何时发生:
- who -b:直接显示上次系统启动时间,最简洁可靠
- last reboot:列出最近多次重启记录,观察是否有固定间隔(如每6小时一次)
- uptime:配合当前时间可倒推出上次启动时刻,适合快速核对
聚焦 systemd 日志定位触发源
现代 Linux 启动由 systemd 管理,它的日志是第一手现场证据:
- journalctl -b -1 -p err:查看上一次启动中的所有错误事件,比翻全量日志更高效
- journalctl -xb | grep -i "reboot\|shutting down\|panic\|oom":带上下文筛选重启前后关键动作
- journalctl --since "2026-03-05 14:00:00" --until "2026-03-05 14:10:00":按时间窗口精准截取可疑时段日志
深挖内核层线索识别硬件与内存问题
很多“自动重启”实际是内核被迫终止运行的结果,痕迹藏在底层:
- dmesg -T | grep -i "killed process":确认是否触发 OOM Killer,被杀进程名和 PID 很关键
- dmesg -T | grep -A2 -B2 "BERT":查找 BIOS 级硬件错误记录(如 PCIe 错误、内存校验失败)
- dmesg -l err,warn | head -n 50:快速扫视本次启动的内核级异常,重点关注存储、电源、CPU 初始化段
交叉验证系统级日志补全信息链
systemd 日志可能被轮转或覆盖,/var/log 下的原始日志是重要备份:
- grep "system boot" /var/log/messages(RHEL/CentOS)或 grep "system boot" /var/log/syslog(Debian/Ubuntu):确认启动起始标记
- grep -i "out of memory\|kernel panic\|watchdog\|thermal\|power" /var/log/messages:批量捕获典型崩溃诱因
- tail -n 200 /var/log/messages | grep -i "reboot":查看重启前最后的系统行为序列










