這裡介紹如何使用 Linux 的 shutdown
、halt
與 poweroff
這些指令來關機,另外提供各種情況的關機方法教學。
一般的 Linux 系統如果要關機,通常都會使用 shutdown
這個指令,除此之外,halt
與 poweroff
這兩個指令也可以用來關機,這裡我們會介紹這些關機指令的使用方式,同時也會提供各種情況的關機範例給大家參考。
如果在 Linux 當機的狀況下要重新開機,可以嘗試使用 SysRq 鍵讓電腦正常重新啟動。
shutdown
指令使用 shutdown
指令是一般 Linux 系統建議的關機方式,他會比較安全的讓系統正常關機,在使用 shutdown
指令關機時,所有登入系統中的使用者都會收到即將關機的警告訊息,而在關機的前五分鐘,也會禁止新的使用者登入。
shutdown
指令的使用方法如下:
shutdown [OPTION] TIME [MESSAGE]
其中 TIME
是指要關機的時間,其格式可分為好幾種:
now
:指定為目前的時間,有就是立即關機的意思,這個應該是最常會被用到。+m
:指定多少分鐘之後關機,例如 +30
就是指 30 分鐘之後關機。hh:mm
:指定某個時間點關機,時間的格式是使用 24 小時制的,例如 18:30
就是下午六點三十分關機。當 TIME
所指定的時間到了之後,shutdown
指令就會送出一個通知給 init
這個 daemon,讓系統進入適當的 runlevel,準備關機。
在選項(OPTION
)的部分,可用的選項有:
-r
:讓系統重新開機(reboot)。-h
:讓系統停止運作(halt)或關閉電源(power off),至於會選擇哪一種則取決於系統(有時候可以在 BIOS 中更改)。-H
:讓系統停止運作。-P
:讓系統關閉電源。-c
:取消之前所下達的關機指令。-k
:模擬關機,只有對使用者發出警告,並禁止新使用者登入,但不關機。這裡的停止運作(halt)與關閉電源(power off)是有差異的,停止運作是指停止電腦上所有 CPU 的運作,這時候螢幕上應該會出現類似「System halted」的字眼,然後就停住了(電源還是開著的),而關閉電源(power off)就是會送出 ACPI 指令通知 PSU 關閉電腦的電源。
接著我們來看一些常用的 shutdown
指令範例。因為關機的動作只有 root
管理者有權限可以執行,所以在使用時記得在 shutdown
指令前加上 sudo -s
或是使用 su -
變更為 root
。
這是最常用例子,大家應該也都是這樣用的。
shutdown -h now
也可以寫成這樣:
shutdown -h +0
或是用更簡潔的寫法:
shutdown -h 0
這些寫法都是一樣的。
設定在當天的晚上 21:30 分關機。
shutdown -h 21:30
如果是使用 SSH 這類的遠端登入,要設定讓機器在某個時間關機,可以讓 shutdown
放在背景執行:
shutdown -h 21:30 &
下完這行指令就可以直接登出,然後系統在時間到的時候就會自己關機。
在十分鐘之後關機,並送出一段訊息給所有目前還在登入中的使用者:
shutdown -h +10 "Development server is going down for maintenance. Please save your work ASAP."
而使用者所看到的訊息會類似這樣:
Broadcast message from root@wks01 (pts/0) (Sat Apr 21 02:26:30 2012): Development server is going down for maintenance. Please save your work ASAP. The system is going DOWN for system halt in 10 minutes!
假設我們之前已經設定好在某個時間自動關機,如果想要取消,就使用:
shutdown -c
有時候我們沒有要真正關機,只是想嚇一嚇線上的使用者,或是在實際執行關機前,測試一下,可以搭配 -k
參數:
shutdown -k 18:30
這時候,系統只會送出關機的訊息,就像這樣:
Broadcast message from seal@steteo1 (/dev/pts/0) at 16:50 ... The system is going down for maintenance in 100 minutes!
看到這個訊息之後,就不會繼續執行關機了,你可以藉此測試一下自己下的指令有沒有問題。
入要重新開機,則使用 -r
參數:
shutdown -r now
另外,亦可使用 reboot
這個指令,效果也是一樣的:
reboot
halt
與 poweroff
指令halt
其實跟 shutdown
沒多大分別,只不過 shutdown
在關機時會把系統的服務都關閉之後,才關閉電腦,而 halt
指令則允許不管系統的狀態為何,直接停止電腦的運作,例如:
halt -f
poweroff
指令也是類似的狀況,它也允許你不管系統的狀況,直接把電腦的電源切斷,例如:
poweroff -f
雖然系統有提供這樣的功能,但是其實這些功能在一般的狀況根本用不到,除非是系統真的當機,不然使用 shutdown
來關機會比較安全。
這裡我們蒐集了一些跟 Linux 關機有關的指令範例。
如果要查詢機器的關機紀錄,可以使用 last
指令:
last -x shutdown
輸出為
shutdown system down 3.8.0-26-generic Mon Oct 7 19:03 - 19:31 (00:27) shutdown system down 3.8.0-26-generic Mon Oct 7 16:07 - 19:00 (02:53) shutdown system down 3.8.0-26-generic Mon Oct 7 11:59 - 14:53 (02:54)
而若要查詢重新開機的紀錄,方法也差不多:
last -x reboot
輸出為
reboot system boot 3.8.0-26-generic Mon Oct 7 19:31 - 19:46 (00:15) reboot system boot 3.8.0-26-generic Mon Oct 7 19:00 - 19:03 (00:02) reboot system boot 3.8.0-26-generic Mon Oct 7 14:53 - 16:07 (01:13)
參考資料:nixCraft