萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 關機與重啟命令詳解:shutdown、halt、reboot、init 差異與最佳實踐

Linux 常用關機/重啟指令包括 shutdown、halt、reboot、init,雖然結果相同但內部機制不同。本文詳細解析各指令用法與差異,助你靈活運用。

1. shutdown —— 安全關機首選

shutdown 能安全關機,**嚴禁直接斷電**,否則導致資料遺失、系統不穩甚至硬體損壞。

執行時會通知所有登入用戶、凍結 login 阻止新登入。支援立即/延遲執行、重啟操作。原理是向 init 發送信號改變運行級別:

  • Runlevel 0:停機
  • Runlevel 6:重啟
  • Runlevel 1:單用戶模式(預設,未指定 -h/-r 時)

具體動作可查 /etc/inittab。

shutdown 參數速查

  • -t:切換 runlevel 前等待秒數
  • -r:重啟
  • -k:僅發送警告,不真正關機
  • -h:關機並切斷電源
  • -n:不經 init 直接關機(不建議)
  • -c:取消進行中的關機,可附加訊息
  • -f:重啟忽略 fsck
  • -F:重啟強制 fsck
  • -time:設定等待時間

2. halt —— 最簡單關機指令

實際等同 shutdown -h。殺死應用進程 → sync → 檔案系統寫入完成 → 停止核心。

halt 參數

  • -n:防止 sync(用於 fsck 修復根分區後避免舊超級塊覆蓋)
  • -w:僅在 wtmp 記錄,不真正關機/重啟
  • -d:不寫 wtmp(含於 -n)
  • -f:不調用 shutdown 強制關機/重啟
  • -i:關機前關閉所有網路介面
  • -p:預設,關機調用 poweroff

3. reboot

流程同 halt,差別在於觸發重啟而非關機。參數大致相同。

4. init —— 所有進程始祖

PID 恆為 1。發送 TERM 信號給 init 會終止所有用戶/守護進程。shutdown 即利用此機制。

init 定義 8 個運行級別:

  • init 0:關機
  • init 6:重啟

telinit 可改變 init 運行級別,如 telinit -iS 進入單用戶模式,無 shutdown 的提示與等待。

copyright © 萬盛學電腦網 all rights reserved