在 CentOS 7.6 中,若系统异常关机,可以通过以下步骤排查原因:
1. 查看系统日志(journalctl
和 /var/log/messages
)
系统日志是首要排查点,记录内核、服务、关机等事件:
# 使用 journalctl 查看系统日志(按时间倒序)
sudo journalctl -b -1 -p 3
# 查看上一次启动的日志(-b -1),优先级3(错误及以上)
sudo journalctl --since "yyyy-mm-dd HH:MM" --until "yyyy-mm-dd HH:MM" | grep -iE "shutdown|poweroff|crash|panic"
# 直接查看 /var/log/messages
sudo grep -iE "shutdown|poweroff|crash|panic|kernel: BUG" /var/log/messages
2. 检查最后关机时间(last
命令)
查看关机/重启记录:
last -x | grep -E "shutdown|reboot|system boot"
输出会显示关机时间及可能的触发用户/进程。
3. 内核日志(dmesg
)
检查内核环形缓冲区中的日志,可能记录崩溃或硬件错误:
sudo dmesg -T | grep -iE "error|panic|oom|critical|hard reset"
4. 硬件和电源问题
- 检查电源日志(若有 UPS 或硬件管理工具):
sudo ipmitool sel list
仅适用于支持 IPMI 的服务器
- 查看系统是否因过热关机:
sudo sensors
需要安装 lm_sensors
5. 文件系统日志(fsck
)
异常关机可能导致文件系统损坏,开机时自动检查会记录到日志:
sudo grep -i fsck /var/log/messages
6. 检查系统服务/进程崩溃
- 查看
coredump
文件(若有进程崩溃):sudo systemctl status systemd-coredump sudo coredumpctl list
- 检查
abrt
日志(自动错误报告工具):sudo abrt-cli list
7. 排查资源耗尽
- 查看历史内存使用(
sar
):sar -r -f /var/log/sa/saXX
XX 为日期(如 sa23 表示23号)
- 检查 OOM Killer 日志:
sudo grep -i "killed process" /var/log/messages
8. 外部因素
- 云服务器:检查云平台控制台的实例操作日志(如 AWS CloudTrail、阿里云操作审计)。
- 物理机:确认是否遭遇断电或硬件故障。
总结步骤
- 确定关机时间:
last -x
- 检查日志:
journalctl
和/var/log/messages
- 内核和硬件:
dmesg
、ipmitool
- 资源和服务:
sar
、coredumpctl
通过以上步骤,通常可以定位到异常关机的直接原因(如内核崩溃、硬件故障、资源耗尽等)。如果日志未正常记录(如突然断电),可能需要结合物理环境排查。