Linux 提供多種關機重啟指令,理解其底層機制與參數差異,能確保資料安全、服務優雅停止,避免強制斷電導致檔案系統損壞。
透過通知 init 切換 runlevel,讓服務依序停止、檔案系統同步寫入。
shutdown -h now # 立即關機
shutdown -r now # 立即重啟
shutdown -h +10 "系統將在10分鐘後關機" # 延遲關機並廣播訊息
shutdown -c # 取消已排程的關機
| 參數 | 作用 |
|---|---|
| -h | 關機後切斷電源 |
| -r | 重新開機 |
| -k | 僅發送警告訊息,不真正關機 |
| -t 秒數 | 切換 runlevel 前等待秒數 |
| -f | 重啟時跳過 fsck |
| -F | 重啟時強制 fsck |
| -n | 不經 init 直接關機(不建議) |
halt # 正常關機
halt -p # 關機並切斷電源(預設)
halt -f # 強制關機,不經 shutdown(危險)
適用於單用戶模式或緊急情況,但不如 shutdown 完善通知機制。
reboot # 正常重啟
reboot -f # 強制重啟(不建議)
行為類似 halt 但切換至 runlevel 6。
init 0 # 關機
init 6 # 重啟
init 1 # 單用戶維護模式
telinit 3 # 切換至多用戶文字模式
直接操作 init 進程,**不發送廣播訊息、無等待時間**,適用於腳本自動化或緊急切換。
| Runlevel | 名稱 | 用途 |
|---|---|---|
| 0 | halt | 關機 |
| 1 | single | 單用戶維護 |
| 2 | multi-user | 多用戶無 NFS |
| 3 | multi-user | 完整多用戶(伺服器常用) |
| 4 | unused | 保留 |
| 5 | graphical | 圖形化多用戶 |
| 6 | reboot | 重啟 |
shutdown -h +1 "message"**,給用戶緩衝時間。systemctl poweroff / reboot(systemd 系統)或 init 0。halt -f/reboot -f,除非系統已無回應。sync 確保緩衝區寫入磁碟。