Linux 常用關機/重啟指令包括 shutdown、halt、reboot、init,雖然結果相同但內部機制不同。本文詳細解析各指令用法與差異,助你靈活運用。
shutdown 能安全關機,**嚴禁直接斷電**,否則導致資料遺失、系統不穩甚至硬體損壞。
執行時會通知所有登入用戶、凍結 login 阻止新登入。支援立即/延遲執行、重啟操作。原理是向 init 發送信號改變運行級別:
具體動作可查 /etc/inittab。
-t:切換 runlevel 前等待秒數-r:重啟-k:僅發送警告,不真正關機-h:關機並切斷電源-n:不經 init 直接關機(不建議)-c:取消進行中的關機,可附加訊息-f:重啟忽略 fsck-F:重啟強制 fsck-time:設定等待時間實際等同 shutdown -h。殺死應用進程 → sync → 檔案系統寫入完成 → 停止核心。
-n:防止 sync(用於 fsck 修復根分區後避免舊超級塊覆蓋)-w:僅在 wtmp 記錄,不真正關機/重啟-d:不寫 wtmp(含於 -n)-f:不調用 shutdown 強制關機/重啟-i:關機前關閉所有網路介面-p:預設,關機調用 poweroff流程同 halt,差別在於觸發重啟而非關機。參數大致相同。
PID 恆為 1。發送 TERM 信號給 init 會終止所有用戶/守護進程。shutdown 即利用此機制。
init 定義 8 個運行級別:
init 0:關機init 6:重啟telinit 可改變 init 運行級別,如 telinit -iS 進入單用戶模式,無 shutdown 的提示與等待。