使用molly-guard保護你的Linux/Unix機器不會被錯誤地關機/重啟
我去!又是這樣。 我還以為我登錄到家里的服務器呢。 結果 重啟的居然是數據庫服務器。 另外我也有時會在錯誤終端內輸入 “shutdown -h 0” 命令。 我知道有些人 經常會犯這個錯誤 。
我的憤怒無從容忍
有辦法解決這個問題嗎?我真的只能忍受這種隨機重啟和關機的痛苦嗎? 雖說人總是要犯錯的,但總不能一錯再錯吧。
***我在 tweet 上發了一通牢騷:
我總是一遍又一遍地犯下同樣的錯誤 :( 本來應該輸入:
sudo virsh reboot d1
卻總是輸錯重啟了自己的電腦
sudo reboot d1
-- nixCraft (@nixcraft) February 19,2017
結果收到了一些建議。我們來試一下。
向你引薦 molly guard
Molly-Guard 嘗試阻止你不小心關閉或重啟 Linux 服務器。它在 Debian/Ubuntu 中的包描述為:
這個包會安裝一個 shell 腳本來屏蔽現有的
shutdown
/reboot
/halt
/poweroff
/coldreboot
/pm-hibernate
/pm-suspend*
命令。molly-gurad
會首先運行一系列的腳本,只有在所有的腳本都返回成功的條件下, 才會調用真正的命令。 其中一個腳本會檢查是否存在 SSH 會話。 如果是通過 SSH 會話調用的命令, shell 腳本會提示你輸入相關閉主機的名稱。 這應該足夠防止你發生意外的關機或重啟了。
貌似 molly-guard 還是個專有名詞:
一種用于防止由于笨拙或者不小心觸碰道大紅開關的屏障。最初指的臨時蓋在 IBM 4341 的大紅按鈕上的有機玻璃,因為有一個程序員蹣跚學步的女兒(名叫 Molly)一天之內重啟了它兩次。 后來這個東西也被用來蓋住磁盤和網絡設備上的停止/重啟按鈕。在硬件目錄中,你很少會看到 “guarded button” 這樣無趣的描述"。
如何安裝 molly guard
使用 apt-get
命令 或者 apt
命令 來搜索并安裝 molly-guard:
$ apt search molly-guard
$ sudo apt-get install molly-guard
結果為:
Fig.01: Installing molly guard on Linux
測試一下
輸入 reboot
命令 和 shutdown
命令:
$ sudo reboot
# reboot
$ shutdown -h 0
# sudo shutdown -h 0
### running wrong command such as follows instead of
### sudo virsh reboot vm_name_here
$ sudo reboot vm_name_here
結果為:
Fig.02: Molly guard saved my butt ;\)
我超級喜歡 molly-guard。因此我將下行內容加入到 apt-debian-ubuntu-common.yml
文件中了:
- apt:
name: molly-guard
是的。我使用 Ansible 在所有的 Debian 和 Ubuntu 服務器上都自動安裝上它了。
相關 : 我的 10 大 UNIX 命令行錯誤
如果我的 Linux 發行版或者 Unix 系統(比如 FreeBSD) 沒有 molly-guard 怎么辦呢?
不用怕,設置 shell 別名 :
## bash shell example ###
alias reboot = "echo 'Are you sure?' If so, run /sbin/reboot"
alias shutdown = "echo 'Are you sure?' If so, run /sbin/shutdown"
你也可以 臨時取消別名機制運行真正的命令。比如要運行 reboot 可以這樣:
# \reboot
或者
# /sbin/reboot
另外你也可以寫一個 shell/perl/python 腳本來調用這些命令并要求 確認 reboot
/halt
/shutdown
的選項。