Linux 核心以穩定著稱,但在極端情況(硬體故障、核心 panic、驅動程式死循環)下仍可能完全凍結。強制斷電重啟極易造成檔案系統損毀、資料遺失。本文介紹 Magic SysRq Key 安全重啟機制,讓你在系統無回應時也能優雅收尾。
SysRq (System Request) 是 Linux 核心提供的低層級緊急指令介面,繞過一般輸入子系統直接由核心處理。即使系統看似完全死鎖,只要核心尚在運作,SysRq 指令通常仍能執行。
# 檢查目前啟用等級(1=全部啟用,>1 為受限,0=關閉)
cat /proc/sys/kernel/sysrq
# 臨時啟用全部功能(需 root)
echo 1 > /proc/sys/kernel/sysrq
# 永久啟用
echo "kernel.sysrq = 1" | sudo tee /etc/sysctl.d/99-sysrq.conf
sudo sysctl --system
注意: 部分雲端主機/嵌入式裝置預設關閉,需先啟用。
組合鍵: Alt + SysRq (PrtSc) + R E I S U B
操作要領:
| 鍵 | 動作 | 核心行為 | 目的 |
|---|---|---|---|
| R | Raw | 將鍵盤從 X 圖形模式切回 XLATE (文字) 模式 | 確保後續按鍵由核心直接接收,不被 X Server 攔截 |
| E | tErm | 發送 SIGTERM 給所有進程 (除 init) | 禮貌請求進程結束,允許儲存資料、釋放資源 |
| I | kIll | 發送 SIGKILL 給所有進程 (除 init) | 強制終止未回應 SIGTERM 的進程 |
| S | Sync | 緊急同步所有掛載檔案系統 | 將記憶體緩衝資料寫入磁碟,防止資料遺失 |
| U | Umount | 將所有檔案系統重新掛載為唯讀 | 確保無進程再寫入磁碟,檔案系統處於乾淨狀態 |
| B | reBoot | 立即重啟系統(不解掛載、不同步) | 核心層面重啟,完成安全關機流程 |
口訣: Reboot Even If System Utterly Broken
| 鍵 | 功能 | 適用場景 |
|---|---|---|
| H | 顯示說明 | 忘記指令時查閱 |
| L | 顯示核心堆疊回溯 | 除錯核心死鎖 |
| M | 顯示記憶體資訊 | 排查 OOM 問題 |
| P | 顯示暫存器/進程狀態 | 查看 CPU 狀態 |
| T | 顯示任務清單 | 類似 ps,核心視角 |
| W | 顯示阻塞任務 | 找出 D 狀態進程 |
| F | 呼叫 OOM Killer | 記憶體耗盡緊急釋放 |
| K | Secure Access Key (殺死當前終端機所有進程) | 類似 Ctrl+Alt+Del,但更徹底 |
echo s > /proc/sysrq-trigger # Sync
echo u > /proc/sysrq-trigger # Umount
echo b > /proc/sysrq-trigger # Reboot
大多數伺服器管理卡支援「虛擬按鍵」功能,可在遠端控制台發送 SysRq 組合鍵。
VM → Guest → Send Ctrl+Alt+Delete 不觸發 SysRq,需使用虛擬鍵盤或上述 /proc 方式kernel.sysrq=0)kernel.sysrq=1reboot 或 systemctl reboot;只有 Shell 完全無回應才用 SysRqMagic SysRq Key 是 Linux 管理員的「最後防線」,掌握 REISUB 組合鍵,能在災難時刻最大程度保護資料完整性。