強制重啟Linux系統的幾種方法
實際生產環境中某些情況下 Linux 服務器系統在出現致命錯誤需要遠程進行重啟,通過常規的 reboot
、init 6
等方法無法正常重啟(例如重啟時卡在驅動程序里等情況),這時就需要通過下面介紹的幾種特殊的方法進行強制重啟。
注意
下面這些強制重啟 Linux 的方法都是直接跳過 umount 文件系統及 sync 等操作,可能導致數據損壞,不在特殊情況下請勿使用。另外當然這些都是需要 root 超級用戶權限的哦。
reboot 命令
直接通過運行 reboot -nf
命令,這樣重啟時可以指定跳過 init 的處理和 sync 操作,這樣可以避免大多數情況下的問題。
magic SysRq key 方法
magic SysRq key 通過 proc 接口提供用戶直接發底層命令給 kernel 的功能,可以實現關機、重啟、宕機等操作,Linux kernel 需要開啟 CONFIG_MAGIC_SYSRQ
才可以支持 magic SysRq key。
運行下面兩條命令就可以直接強制重啟系統:
1
2
|
[root@localhost ~]
# echo 1 > /proc/sys/kernel/sysrq
[root@localhost ~]
# echo b > /proc/sysrq-trigger
|
相應的直接強制關機的命令:
1
2
|
[root@localhost ~]
# echo 1 > /proc/sys/kernel/sysrq
[root@localhost ~]
# echo o > /proc/sysrq-trigger
|
watchdog 方法
如果 Linux kernel 未開啟 magic SysRq key 或者不起作用,可以嘗試使用 watchdog 重啟方法。watchdog 通過監控數據輸入是否正常可以實現在系統出現異常時自動重啟系統,這里我們剛好可以借用的。
首先需要加載 watchdog 支持,這個和主板硬件設備有關,如果只需要軟件模擬的,可以運行:
1
|
[root@localhost ~]
# modprobe softdog
|
命令加載軟件 watchdog 支持,接着再運行:
1
|
[root@localhost ~]
# cat /dev/watchdog
|
命令,該命令會馬上退出並報錯,同時系統日志中就會提示:
1
|
softdog: Unexpected close, not stopping watchdog!
|
這就表示 watchdog 設備是被意外關閉的而不是正常停止的,大約等待 60 秒之后你就會發現 Linux 系統自動重啟了。Linux watchdog 的異常等待時間是通過 /proc/sys/kernel/watchdog_thresh
設置的,一般默認為 60 秒。
IPMI 方法
上面幾種方法都不能用?如果你的主板剛好支持 IPMI 管理接口的話,那可以直接通過 IPMI 實現硬件上的強制關機或重啟。
首先加載 IPMI 支持:
1
|
[root@localhost ~]
# modprobe ipmi_msghandler ipmi_devintf ipmi_si
|
確認 IPMI 設備是否已找到:
1
|
[root@localhost ~]
# ls -l /dev/ipmi*
|
如果輸出正常的話表示 IPMI 被正確加載了,接着安裝 ipmitool
管理工具。ipmitool
可以通過 IPMI 接口完成對本機或遠程主機的一系列管理操作。
這里我們就用直接電源管理的,重啟系統:
1
|
[root@localhost ~]
# ipmitool power reset
|
運行完成后主機就會馬上重啟,相應的關閉主機可以運行命令:
1
|
[root@localhost ~]
# ipmitool power off
|
ipmitool
還可以實現在系統未啟動時遠程查看監控主板硬件狀態等功能,在 IPMI 可用的情況下 ipmitool
還是比較方便好用的。