歡迎光臨
每天分享高質量文章

使用 molly-guard 保護你的 Linux/Unix 機器不會被錯誤地關機/重啟 | Linux 中國

我去!又是這樣。 我還以為我登入到家裡的伺服器呢。 結果 重啟的居然是資料庫伺服器。 另外我也有時會在錯誤終端內輸入 “shutdown -h 0” 命令。 我知道有些人 經常會犯這個錯誤 。
— Vivek Gite


本文導航
編譯自 | https://www.cyberciti.biz/hardware/how-to-protects-linux-and-unix-machines-from-accidental-shutdownsreboots-with-molly-guard/ 
 作者 | Vivek Gite
 譯者 | lujun9972

我去!又是這樣。 我還以為我登入到家裡的伺服器呢。 結果 重啟的居然是資料庫伺服器[1]。 另外我也有時會在錯誤終端內輸入 “shutdown -h 0[2]” 命令。 我知道有些人 經常會犯這個錯誤 [3]

我的憤怒無從容忍

有辦法解決這個問題嗎?我真的只能忍受這種隨機重啟和關機的痛苦嗎? 雖說人總是要犯錯的,但總不能一錯再錯吧。

最新我在 tweet 上發了一通牢騷:

我總是一遍又一遍地犯下同樣的錯誤 🙁 本來應該輸入: sudo virsh reboot d1

卻總是輸錯重啟了自己的電腦 sudo reboot d1

— nixCraft (@nixcraft) February 19,2017[4]

結果收到了一些建議。我們來試一下。

向你引薦 molly guard

Molly-Guard 嘗試阻止你不小心關閉或重啟 Linux 伺服器。它在 Debian/Ubuntu 中的包描述為:

這個包會安裝一個 shell 指令碼來遮蔽現有的 shutdown/reboot/halt/poweroff/coldreboot/pm-hibernate/pm-suspend* 命令。 molly-gurad 會首先執行一系列的指令碼,只有在所有的指令碼都傳回成功的條件下, 才會呼叫真正的命令。 其中一個指令碼會檢查是否存在 SSH 會話。 如果是透過 SSH 會話呼叫的命令, shell 指令碼會提示你輸入相關閉主機的名稱。 這應該足夠防止你發生意外的關機或重啟了。

貌似 molly-guard[5] 還是個專有名詞Jargon File

一種用於防止由於笨拙或者不小心觸碰道大紅開關的屏障。最初指的臨時蓋在 IBM 4341 的大紅按鈕上的有機玻璃,因為有一個程式員蹣跚學步的女兒(名叫 Molly)一天之內重啟了它兩次。 後來這個東西也被用來蓋住磁碟和網路裝置上的停止/重啟按鈕。在硬體目錄中,你很少會看到 “guarded button” 這樣無趣的描述”。

如何安裝 molly guard

使用 apt-get 命令[6] 或者 apt 命令[7] 來搜尋並安裝 molly-guard:

  1. $ apt search molly-guard

  2. $ sudo apt-get install molly-guard

結果為:

Fig.01: Installing molly guard on Linux

測試一下

輸入 reboot 命令 [8] 和 shutdown 命令:

  1. $ sudo reboot

  2. # reboot

  3. $ shutdown -h 0

  4. # sudo shutdown -h 0

  5. ### running wrong command such as follows instead of

  6. ### sudo virsh reboot vm_name_here

  7. $ sudo reboot vm_name_here

結果為:

Fig.02: Molly guard saved my butt ;\)

我超級喜歡 molly-guard。因此我將下行內容加入到 apt-debian-ubuntu-common.yml 檔案中了:

  1. - apt

  2. name molly-guard

是的。我使用 Ansible 在所有的 Debian 和 Ubuntu 伺服器上都自動安裝上它了。

相關 : 我的 10 大 UNIX 命令列錯誤[3]

如果我的 Linux 發行版或者 Unix 系統(比如 FreeBSD) 沒有 molly-guard 怎麼辦呢?

不用怕,設定 shell 別名 [9]

  1. ## bash shell example ###

  2. alias reboot = "echo 'Are you sure?' If so, run /sbin/reboot"

  3. alias shutdown = "echo 'Are you sure?' If so, run /sbin/shutdown"

你也可以 臨時取消別名機制執行真正的命令[10]。比如要執行 reboot 可以這樣:

  1. # \reboot

或者

  1. # /sbin/reboot

另外你也可以寫一個 shell/perl/python 指令碼來呼叫這些命令並要求[11] 確認 reboot/halt/shutdown 的選項。


via: https://www.cyberciti.biz/hardware/how-to-protects-linux-and-unix-machines-from-accidental-shutdownsreboots-with-molly-guard/

作者:Vivek Gite[13] 譯者:lujun9972 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

LCTT 譯者

lujun9972 ? ? ?
共計翻譯:31 篇
貢獻時間:28 天


推薦文章

< 左右滑動檢視相關文章 >

點選圖片、輸入文章 ID 或識別二維碼直達

贊(0)

分享創造快樂