服务器关机故障排查:大白话版笔记
注意:本文解释文字仅供学习交流使用,不构成专业的技术指导或建议;只是理论实例解释不代表实际运维场景操作,注意鉴别!
运维日常最头疼的就是服务器 “突然躺平”
—— 要么没操作就自己关机,要么想关还关不掉。
紧急检查清单 (Cheat Sheet)
服务器突然宕机,重启后第一件事:sudo journalctl -b -1 -p err..alert | tail -50sudo journalctl -b -1 | grep -i "thermal\|panic\|oom\|power" | tail -20登录 iDRAC/iLO,查看 硬件日志 和 电源状态。运行 sensors 和 smartctl -H /dev/sda。关机命令卡住时:Ctrl+Alt+F2 切换到其他 TTY。systemctl status --state=failedtop (按 P 按 CPU 排序,按 M 按内存排序)sudo kill -9 <最占资源的进程PID>如果无效,尝试通过 ipmitool chassis power reset 或 iDRAC 界面硬重启。
一、先搞懂:遇到的是哪种 “关机故障”?
举个例子:远程连服务器传文件,突然断了,去机房看机器灯灭了 —— 这是 “意外关机”;执行poweroff
,屏幕显示 “等进程 1234 结束”,卡半小时 —— 这是 “关机失败”。
故障类型 | 大白话现象 | 重点排查啥 |
---|---|---|
意外关机 / 宕机 | 正干活呢突然断连,屏幕黑了,电源灯可能闪红 | 大概率是硬件 / 电源 / 温度出问题 |
主动关机失败 | 执行shutdown 后卡住,半天没反应 | 肯定是某个程序 / 服务 “赖着不走” |
二、通用排查流程:从 “看日志” 到 “拆硬件”(按顺序来,别瞎搞)
步骤 1:先看日志!90% 的问题都在日志里写着呢
日志就是服务器的 “日记本”,关机前发生啥都会记下来。重点看 3 个地方,按优先级来:
1.1 用journalctl
看 “完整日记”(推荐!)
这工具能看服务器 “上一次开机到关机” 的所有记录,哪怕日志文件丢了也能找着。
# 1. # 查上一次开机的所有日志(比如服务器刚硬重启,查宕机前的记录)
sudo journalctl -b -1 # -b -1 = 上一次启动,-b 0 = 现在的启动# 偷懒技巧:直接搜“关机”关键词
sudo journalctl -b -1 | grep -i 关机 # 或用英文 shutdown# 2. 在上次日志中过滤关键错误
sudo journalctl -b -1 -p err..alert # 查看错误及以上级别的日志
sudo journalctl -b -1 | grep -iE "error|panic|oom|thermal|shutdown|power"# 3. 查看内核日志
sudo journalctl -b -1 -k
- 看到 “systemd-shutdown:给所有进程发停止信号”—— 说明是有人手动关的,或计划任务触发的;
- 看到 “Kernel panic:致命错误”—— 内核崩了,大概率是硬件或驱动坏了;
- 看到 “温度超过阈值,CPU 降频”——CPU 太热了,服务器自我保护关机了。
1.2 看syslog
:系统级 “流水账”
记录服务启停、简单硬件问题,比如谁执行了关机命令。
# 实时查看系统日志(用于观察关机卡住时的动态)
sudo tail -f /var/log/syslog# 看最近100条日志,按Ctrl+C停
sudo tail -n 100 /var/log/syslog# 搜“关机/重启”相关的
sudo grep -iE "关机|重启|poweroff" /var/log/syslog
1.3 看kern.log
:内核 “吐槽本”
专门记硬件相关的破事,比如硬盘坏了、内存出错。
注意:云服务器的日志排查核心是 “利用云平台工具”,而非执着于本地 kern.log
—— 这和物理机完全不同
# 搜硬件错误关键词:电源、温度、错误、崩溃
sudo grep -iE "电源|温度|error|panic" /var/log/kern.log
- “ACPI: 电源按钮被按了”—— 有人去机房按了电源键;
- “sd 0:0:0:0: [sda] 错误”—— 硬盘 sda 坏了,读写出错;
- “内存检测到不可修复错误”—— 内存条废了,得换。
步骤 2:查硬件!日志说硬件坏了,就得验证
如果日志提示 “温度高”“硬盘错”,或者没日志(突然断电),就查硬件。
2.1 先查电源:最容易出问题的地方
服务器 “突然躺平”,80% 先看电源!
- 物理检查:
- 去机房看看:电源线松没松?插座有电没?
- 机架服务器看电源模块灯:绿灯常亮是好的,红灯 / 闪就是坏了;
- 有 UPS 的话:看 UPS 灯,是不是电池没电了(一般 UPS 没电会叫)。
- 远程查(不用去机房):
服务器带 “远程管理卡”(戴尔叫 iDRAC,华为叫 iBMC),登录 Web 界面,找 “硬件日志”→“电源事件”,看有没有 “电源掉电” 记录。
也能用命令查:bash
# 查电源状态(需装ipmitool,提前在有网时装) sudo ipmitool -H 远程管理卡IP -U 用户名 -P 密码 chassis status # 正常会显示“系统电源:开”,没电源问题
2.2 查散热:CPU “中暑” 也会关机
服务器跟人一样,太热了就罢工!
- 系统内查温度:
# 先装温度工具(有网时装) sudo apt install lm-sensors# 看CPU/硬盘温度 sudo sensors
看结果里的 “crit”(临界温度),比如 CPU 临界 100℃,现在 95℃—— 快中暑了,赶紧处理! - 物理检查(断电后!):
- 开机箱,看 CPU 风扇转不转?是不是积灰堵了(用吹风机吹干净);
- 看 CPU 和散热器之间的 “硅脂”——
2.3 查关键硬件:内存、硬盘、RAID 卡
这仨坏了,服务器要么关机,要么数据丢!
举个例子:查 RAID 卡电池,输出 “Battery State: Failed”—— 电池坏了,得联系厂商换。
硬件 | 怎么查 | 好的状态 | 坏了的信号 |
---|---|---|---|
内存 | 1. 开机时按提示进 BIOS,选 “内存检测”;2. 系统里装memtest86+ ,重启后检测 | 没错误提示 | 检测说 “不可修复错误”,日志里有 “内存错误” |
硬盘 | 1. 装smartctl ,执行sudo smartctl -a /dev/sda ;2. 查dmesg 看有没有硬盘错误 | SMART 状态 “通过”,没 IO 错误 | SMART 说 “预失败”,dmesg 有 “sd [a-z] error” |
RAID 卡 | 1. 戴尔用perccli 工具,执行sudo ./perccli /c0 show battery ;2. 远程管理卡看 RAID 状态 | RAID 正常,电池容量 > 50% | RAID 显示 “降级”,电池状态 “失败” |