題 在UNIX上運行halt命令後“拔插頭”是否安全


這可能是一個愚蠢的問題,答案很簡單,但我似乎無法在數小時的Google版本之後闡明它。從我學到的東西 halt UNIX上的命令(例如BSD)和類Unix系統(例如Linux)將在調用後暫停CPU sync。我知道在大多數現代Linux發行版上 halt 只是另一種打電話的方式 shutdown,但我已經在我的筆記本電腦上安裝了FreeBSD和Arch Linux,這兩個系統似乎都做了什麼 halt 應該這樣做(停止CPU,但不要關閉ACPI)。我的問題是打電話後

# sync;sync;sync
# halt

“拔插頭”或切斷電源(從牆上的電源插座)是否安全?打電話後 halt 系統真的處於“關閉”狀態嗎?

獎金: 在eiter Arch Linux或FreeBSD上停止呼叫後,我的計算機似乎“暫停”,就像它沒有響應一樣,沒有任何作用,但我仍能聽到風扇正在運行。我取出電源後風扇停止運轉。所以這不是問題,我只是想知道是否可能 halt 不停 所有 硬件,只停止CPU?


4
2017-10-24 02:01


起源


一旦系統停止,通過斷電不會對系統損壞造成進一步的危險。 - Nevin Williams
@NevinWilliams這是否意味著<code> halt </ code>將卸載所有掛載的FileSystems? - Ankush
沒有。'男人停止'對這個話題說什麼? - Nevin Williams
暫停只能暫停具有暫停功能的硬件。球迷沒有暫停功能。 - qasdfdsaq


答案:


只要 sync 已完成,是的 大概 總是可以拔掉!

在過去不好的日子裡,如果在頭部沒有停放時拔掉插頭,你可能會損壞你的磁盤盤片,但是現在你可以做任何硬件損壞(可能,也許......讓我們安全而不是這樣做)。

這只會造成軟件損壞。顯然在大磁盤作業中插拔插頭是一個糟糕的計劃,但如果機器空閒,你已經保存了打開的文件,並且你已經完成了 sync 為了刷新寫緩衝區,突然斷電事件不太可能造成太大傷害。無論如何,之後 halt 該軟件不會再做任何事情,因此任何已經完成的損害都已經完成。

當然,這都是一個有爭議的問題,因為 halt 只是一個同義詞 shutdown -H now,它將正確,正常地關閉所有正在運行的進程和服務,同步所有數據,並卸載所有文件系統。

至於其他硬件設備,它們仍然處於閒置狀態。在CPU暫停之前,屏幕將繼續顯示屏幕上顯示的內容。沒有軟件控制,粉絲將繼續做他們做的事情。磁盤將執行其可配置的電源配置文件所要做的任何事情。

事實上,根據您的機器,CPU甚至可能不會關閉它 威力 只是忙著圍繞一個無限循環旋轉,等待有人重置。


5
2017-10-26 15:51



給予好評。這在技術上確實如此。 imho,我唯一一次“只是拔掉插頭”就會沒有響應 - 在這種情況下我只能祈禱同步已經“足夠”了 - 幸運的是,現在,這種情況非常有利於Linux保持文件系統完好無損。當然這也是我們保留備份的原因。 - SDsolar


我建議不要這樣做。雖然一些/大多數現代操作系統別名 halt 至 shutdown -h now,依靠這一點是不好的做法。

在它的真實形式, halt 是一個非常突然停止所有CPU活動,並且實際上只是被設計為被調用 rc.d 在裡面 init 0 在系統運行正確的關閉序列之後運行級別...雖然您已經同步了磁盤,這可以解決大部分數據損壞的風險,但仍然有更多的清理(FS卸載,鎖定文件等)適當的關機。

你還冒著一些過程開始做一些關鍵的事情的風險 sync 和 halt 調用 - 無論你多快地鏈接它們(除非你能以某種方式保證CPU調度程序的行為......你不能)。

最佳做法是打電話 shutdown -h now,它將優雅地停止所有進程和守護進程,卸載文件系統,並最終使系統處於相同的暫停狀態。然後你可以安全地移除電源。此方法還具有調用ACPI斷電命令(在現代ACPI支持系統上)的優點,這會導致PSU切斷電源(從而停止風扇和其他所有操作),這與(true)不同 halt,它不會發出任何ACPI命令,並且會在所有仍然通電的情況下使CPU空閒。


4
2017-10-26 16:49





是的,這就是目的 halt 命令。它導致所有活動停止。

這些命令會立即關閉系統以準備斷電:

  • sudo shutdown -h now
  • sudo poweroff
  • sudo停了下來
  • sudo init 0

請注意硬盤指示燈

如果有活動,則係統仍在運行。這些命令後很快就會停止。

一旦它停止閃爍,你知道它已完成關閉。


0
2018-06-19 19:25