看似簡單的「關機/重啟」,實則關係到資料一致性、服務優雅停止、甚至叢集漂移。本文系統整理 11 種指令,解析底層機制差異,給出生產環境推薦用法。
| 指令 | 效果 | 適用場景 | 備註 |
|---|---|---|---|
shutdown -h now | 立即關機 | 生產環境標準 | 會發送壁報通知所有登入使用者 |
shutdown -h +10 | 10 分鐘後關機 | 計劃性維護窗口 | 可加訊息:shutdown -h +10 "10 分鐘後關機維護" |
shutdown -h 05:30 | 指定時間關機 | 夜間排程 | 24 小時制 |
poweroff | 立即關機 | 單機、桌面端 | systemd 別名,不發壁報 |
halt | 停止 CPU,電源視硬體而定 | 嵌入式/調試 | 不一定切斷電源 |
init 0 | 切換至 runlevel 0 | SysVinit 相容 | systemd 下為 systemctl isolate poweroff.target |
shutdown -c | 取消排程關機/重啟 | 誤操作補救 | 僅限 shutdown 排程有效 |
| 指令 | 效果 | 適用場景 | 備註 |
|---|---|---|---|
shutdown -r now | 立即重啟 | 生產環境標準 | 同樣發壁報、跑關機腳本 |
shutdown -r 05:30 | 定時重啟 | 核心更新後排程 | |
reboot | 立即重啟 | 單機、測試環境 | systemd 別名 |
init 6 | 切換至 runlevel 6 | SysVinit 相容 | systemd 下為 systemctl isolate reboot.target |
shutdown?shutdown 會透過 wall 向所有 pts/tty 發送警告,給使用者存檔機會;reboot/poweroff 不會。shutdown 觸發 systemd(或 SysVinit)依相依順序停止服務、同步檔案系統、卸載掛載點;暴力指令可能跳過部分步驟。shutdown 需 root 或 wheel 群組;reboot/poweroff 在 systemd 下透過 polkit 允許本地使用者執行,權限模型不同。/sbin 下可見 halt、poweroff、reboot → systemctl 的符號連結;shutdown 為獨立二進制,邏輯更完整。# 1. 確認無關鍵任務執行中
ps aux | grep -E '(backup|migrate|deploy)'
# 2. 通知團隊(可整合至 ChatOps)
shutdown -r +5 "計劃性重啟:核心更新 5.15.0-105,預計 5 分鐘後執行"
# 3. 等待維護窗口,觀察 wall 訊息
# 4. 若需取消
shutdown -c
# 5. 重啟後驗證
systemctl status critical-service
journalctl -b -1 -p err..alert # 檢查上一次開機錯誤
sync; sync; sync; reboot -f(-f 強制不經 systemd,最後手段)nohup shutdown -r +1 & 或使用 screen/tmux 保持會話crm node standby 或 pcs cluster stop 剔除叢集,再 shutdown一句话總結: 有 shutdown 就用 shutdown;它是唯一同時具備「通知、優雅停服、同步盤面、權限可控」四大特性的指令。其餘指令留給單機測試、嵌入式或緊急搶障時使用。