Linux 於 CLI 強制遠端重新開機

前陣子有台機器遇到 systemd 有問題(註:Linux systemd 取消卡住的工作),但是問題找不出來,想說要找時間重新開機解決,沒想到連重新開機都是個大問題。

  • 註1:此篇環境為 Debian Linux jessie
  • 註2:機器在遠端才需要使用此篇的強制重新開機的命令,不然直接手動強迫關機在開機就好

Linux 於 CLI 強制遠端重新開機

在 systemctl restart any-service 都有問題,原來連 reboot 也需要 systemd 正常運作才可以,嘗試下述命令重新開機,都無法成功:

  • sudo reboot
  • sudo shutdown -r now
  • sudo shutdown -r -f now # sudo shutdown -r -F now 出現下述錯誤訊息
    • Code should not be reached 'Unhandled option' at ../src/systemctl/systemctl.c:6316, function shutdownparseargv(). Aborting.
    • 查看是 Debian jessie 不支援 -f / -F 的參數

上述情況都已經嘗試過,確實無法解決,但是機器在遠端,只好使用最暴力的方式:

  1. sudo su - # 先切成 root,不然下述命令寫不進去
  2. echo 1 > /proc/sys/kernel/sysrq
  3. echo b > /proc/sysrq-trigger # 下到這行就直接斷線,立刻重新開機了(若 b 改 o 為關機)

感謝網友提供不用切成 root 的做法

  1. echo 1 | sudo tee /proc/sys/kernel/sysrq
  2. echo b | sudo tee /proc/sysrq-trigger

上述參考自此篇:Linux: emergency reboot or shutdown with magic commands

Save

Save

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Linux 於 CLI 強制遠端重新開機〉中有 4 則留言

  1. 您好, 重新開機應該是 b 而不是 o 喔
    另有個不需 sudo su - 的方法與您分享
    echo 1 | sudo tee /proc/sys/kernel/sysrq
    echo b | sudo tee /proc/sysrq-trigger

  2. 如果不想切 root 的話其實也可以考慮這樣做:

    sudo sh -c 'echo 1 > /proc/sys/kernel/sysrq'
    sudo sh -c 'echo b > /proc/sysrq-trigger'

    或是合併
    sudo sh -c 'echo 1 > /proc/sys/kernel/sysrq && echo b > /proc/sysrq-trigger'

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料