Shutdown

是否可以創建一個終端命令別名來自動化 CTRL + ALT + SYSRQ + REISUO 按鍵?

  • May 9, 2019

無論出於何種原因,我的外部硬碟驅動器在啟動時經常遇到 initramfs 問題,導致我執行$ fsck /dev/sdb2 -y以使一切恢復正常。

不過,我注意到的一件事是,使用標題命令關閉或重新啟動系統大大減少了此錯誤的發生。

有沒有辦法創建一個腳本或終端別名來“完成”按下這些鍵的動作(每個字母之間有一點延遲)?所以與其用手指和腳趾玩數字型操,我可以簡單地打字$ reisuo,它會為我完成動作?

#!/bin/sh

for c in r s u o; do
 echo $c > /proc/sysrq-trigger
 sleep 1
done

(雖然沒有模擬CTRL鍵,反正也沒效果)

編輯:刪除e i,因為它們會殺死程序,包括目前的 shell 和腳本的其餘部分不會繼續。你最好還是使用killslay無論如何。而當你在做的時候SysRQ s u or是無關緊要的。

對於像我這樣可能對 shell 腳本不熟悉的人,以下是我如何讓@Radovan 的腳本啟動並執行的分步說明:

  1. $ cd /usr/local/bin這是保存腳本的地方。在此目錄中保存腳本不需要添加新路徑。
  2. sudo vim rsuo.sh要與此目錄正確互動,需要使用 sudo 權限創建腳本
  3. 在上面添加@Radovan 的腳本,感謝@JdeBP 的好建議,現在省略了 SIGTERM 和 SIGKILL 命令,因此腳本能夠執行完成
  4. 保存文件後,需要擴展其權限,以便非 root 使用者可以訪問它,使用以下命令:$ sudo chmod u+x rsuo.sh和/或$ sudo chown <user_name> rsuo.sh
  5. 現在文件已經設置好了,要為命令創建別名,打開 .bashrc ( $ vim ~/.bashrc) 並添加alias rsuo="cd /usr/local/bin && sudo rsuo.sh"
  6. 保存後,關閉並重新啟動終端,當您輸入 時$ rsuo,它會提示您輸入 sudo 密碼,然後執行腳本。
  7. 我對 rsub 命令重複了上述步驟,這樣我也可以重新啟動系統。
  8. 根據自己的喜好食用雙份奧利奧;)

引用自:https://unix.stackexchange.com/questions/517455