Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 系統重啟/關機指令完整指南:shutdown、reboot、halt、systemctl、telinit 差異與最佳實務

編輯:關於 Linux

Linux 提供多種關機/重啟指令,行為細節不同。本文系統整理 shutdown、reboot/halt/poweroff、systemctl、telinit 的差異、適用場景、排程用法與日誌追蹤,助你選擇最安全的操作方式。

指令對照表

指令動作通知使用者執行層級適用場景
shutdown -h now關機是 (廣播)0生產環境標準關機
shutdown -r now重啟是6生產環境標準重啟
shutdown -h +10 "維護"10 分鐘後關機是0排程維護
reboot重啟否6單用戶/測試環境快速重啟
halt / poweroff關機否0單用戶/無使用者登入時
systemctl reboot重啟否 (systemd wall 除外)6systemd 系統統一管理
systemctl poweroff關機否0systemd 系統統一管理
telinit 6 / 0重啟/關機否6/0極簡環境/容器/舊版 SysVinit

核心差異解析

  • shutdown:唯一會廣播訊息給所有登入使用者、禁止新登入、啟動關機腳本 (runlevel 0/6) 的標準工具,生產環境首選。
  • reboot/halt/poweroff:直接呼叫 reboot(2) 系統呼叫,不發送警告,適合單用戶模式或自動化腳本 (搭配 --no-wall 抑制 systemd 廣播)。
  • systemctl:systemd 統一入口,實際仍呼叫 shutdown 邏輯,支援 --message 自訂廣播。
  • telinit:傳統 SysVinit 介面,僅切換 runlevel,不執行關機前清理腳本,不建議常規使用。

排程關機/重啟範例

# 今晚 23:30 重啟
shutdown -r 23:30 "夜間例行重啟"

# 30 分鐘後關機
shutdown -h +30 "30 分鐘後關機進行硬體維護"

# 取消排程
shutdown -c

日誌追蹤

# 查看最近重啟/關機記錄
last -x reboot
last -x shutdown

# journctl (systemd)
journalctl -b -1 -u systemd-shutdown  # 上一次開機的關機日誌
journalctl --list-boots

最佳實務清單

  1. 生產環境永遠使用 shutdown -r/-h,給使用者緩衝時間。
  2. 重啟前執行 sync 確保快取寫入 (shutdown 內建)。
  3. 避免直接拔電 (可能損壞檔案系統/硬體)。
  4. 容器內請用 systemctl reboot 或 shutdown,reboot 可能失效。
  5. 關機前檢查關鍵服務狀態:systemctl list-units --state=active。

緊急情況

# 系統死鎖無法正常關機,強制重啟 (Magic SysRq)
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger   # 立即重啟,不同步磁碟
# 或組合鍵 Alt+SysRq+R E I S U B (依序)

選對指令、遵循流程,讓每一次重啟/關機都安全可控。

Copyright © Windows教程網 All Rights Reserved