標籤:

Linux 下 halt, poweroff, shutdown 有什麼區別?

今天剛剛裝了 Ubuntu 12.04,當一切都配置完畢以後,我就在terminal 里輸入了 halt 命令,結果機器關到一半就死機了,所以我不得不強制把電腦關掉,結果搞到Win 7 也崩潰了。

下午針對這個問題google了一下,原因大概就是 halt 是強制關機,而poweroff 會先給 ACPI (Advanced Configuration and Power Management Interface)一個命令,之後再關機(不知道這麼理解是不是準確,逃)。感覺是我直接用 halt 才出的問題。繼而觀察了下這三個命令,

halt 和 poweroff 都是 reboot 的軟鏈接,而shutdown 是一個獨立的命令,它的後面可以指定關機的時間和關機的message,shutdown -P 和 shutdown -H 也就是 halt 和 poweroff,所以,shutdown 就是個加了時間的 halt 或者是 poweroff。

另外,我還看到了 `init 0` 這種用法,這種用法和直接用 halt 命令關機是一致的。

不知道這麼理解是否有問題。


shutdown實際上是調用init 0, init 0會cleanup一些工作然後調用halt或者poweroff。其實主要區別是halt和poweroff,做沒有acpi的系統上,halt只是關閉了os,電源還在工作,你得手動取按一下那個按鈕,而poweroff會發送一個關閉電源的信號給acpi。但在現在的系統上,他們實際上都一樣了


我一般用init 0或是init 6


對於使用systemd 的系統來說是沒有區別的,因為halt、poweroff、reboot、 telinit、shutdown 都是以符號鏈接到/bin/systemctl 的。想深入了解的可以去unix.stackexchange.com/a/196014/5132


瀉藥

樓上的makefifo已經很完美的回答了。我沒必要再寫了。

實際上我習慣使用init 0 但除了新機器調配時候會用到


推薦閱讀:

Linux 與 OS X 哪個更適合個人使用?為什麼?
如何使php5.4 , php 5.6, php7 環境 在一台伺服器上共存?
Linux中console、terminal、tty、pty、pts區別?
linux上,C代碼被編譯鏈接成可執行文件後,被載入運行的過程具體是怎樣的?
如何學習使用桌面 Linux 發行版?

TAG:Linux |