注意:本文解釋文字僅供學習交流使用,不構成專業的技術指導或建議;只是理論實例解釋不代表實際運維場景操作,注意鑒別!
運維日常最頭疼的就是服務器 “突然躺平”
—— 要么沒操作就自己關機,要么想關還關不掉。
緊急檢查清單 (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 顯示 “降級”,電池狀態 “失敗” |