shutdown 命令是 Linux 系统中用于安全关机或重启的标准命令,与直接使用 reboot 或 halt 不同,shutdown 命令会通知所有登录系统的用户,并给她们留出保存工作的时间,因此更安全、更友好。

基本语法
shutdown [选项] [时间] [警告信息]
- 选项: 控制关机或重启的行为。
- 时间: 指定何时执行关机/重启操作。
- 警告信息: 向所有登录用户发送的自定义警告信息。
核心参数详解
-h 或 --halt: 关机
这是最常见的参数之一,用于在指定时间后关闭系统。
示例:
-
立即关机:
sudo shutdown -h now
或者使用更完整的
--poweroff:
(图片来源网络,侵删)sudo shutdown --poweroff now
-
10分钟后关机:
sudo shutdown -h +10
-
在特定时间关机 (22:30):
sudo shutdown -h 22:30
-
发送自定义警告信息:
sudo shutdown -h +5 "系统将在5分钟后维护,请立即保存您的工作!"
-r 或 --reboot: 重启
这也是一个非常常用的参数,用于在指定时间后重启系统。

示例:
-
立即重启:
sudo shutdown -r now
-
30分钟后重启:
sudo shutdown -r +30
-
在特定时间重启 (凌晨1点):
sudo shutdown -r 01:00
-c 或 --cancel: 取消已计划的关机/重启
如果你已经设置了一个关机或重启计划,但想取消它,可以使用这个参数。
示例:
- 取消所有待处理的关机/重启任务:
sudo shutdown -c
执行后,系统会向所有用户广播一条消息,告知已取消关机计划。
-H 或 --halt: 停止系统
这个参数与 -h 非常相似,它也会停止系统,但通常不会切断电源(除非硬件支持 APM),在现代 Linux 系统中,-h 和 -H 的行为几乎没有区别,都等同于 --poweroff。
-P 或 --poweroff: 切断电源
明确指示系统在停止后关闭电源,这通常是 -h 的默认行为。
时间参数的格式
shutdown 命令对时间的格式非常灵活:
now
立即执行。
+分钟数
从现在起,经过指定的分钟数后执行。
+5: 5分钟后+60: 60分钟后(1小时后)
hh:mm
在指定的24小时制时间点执行。
23:59: 凌晨11点59分08:00: 早上8点
wall
这是一个特殊的时间参数,它不会立即关机或重启,而是会向所有用户发送一条警告信息,并保持系统运行,这通常用于通知用户系统即将进行维护。
示例:
sudo shutdown wall "服务器将在10分钟后进行维护升级,请保存您的工作。"
这条命令会向所有终端上的用户广播后面的消息。
其他实用参数
-k 或 --no-wall: 只发送警告,不执行关机
这个参数有点“欺骗性”,它只向用户发送警告信息,但并不会真正关机或重启,这可以用来测试通知功能或“吓唬”一下忘记保存工作的用户(开玩笑用,不建议在生产环境随意使用)。
示例:
sudo shutdown -k +5 "系统即将关机!"
用户会收到关机警告,但5分钟后系统会正常运行。
--help
显示 shutdown 命令的帮助信息。
--version
显示 shutdown 命令的版本信息。
与 shutdown 相关的命令
虽然 shutdown 是最安全的,但有时你可能需要更直接的命令。
| 命令 | 功能 | 备注 |
|---|---|---|
shutdown -h now |
安全关机 | 通知用户,推荐使用。 |
halt |
直接关机 | 不通知用户,立即停止系统。 |
poweroff |
直接关机并断电 | 类似 halt,但更明确地表示要切断电源。 |
shutdown -r now |
安全重启 | 通知用户,推荐使用。 |
reboot |
直接重启 | 不通知用户,立即重启系统。 |
重要提示: 在多用户或有重要服务运行的服务器上,强烈推荐使用 shutdown,而不是 halt、poweroff 或 reboot,直接使用后者可能会导致其他用户的数据丢失或服务中断。
实际使用场景示例
-
下班前关机:
# 晚上6点关机,并提前30分钟、10分钟、5分钟提醒用户 sudo shutdown -h 18:00
-
紧急重启:
# 立即重启,并通知用户系统出现故障需要重启 sudo shutdown -r now "系统遇到致命错误,必须立即重启以恢复服务!"
-
计划维护:
# 在凌晨2点进行重启,并提前1小时和15分钟发送两次通知 sudo shutdown -r 02:00 "服务器将在凌晨2点重启以进行系统更新。" # 一小时后再次提醒 sudo shutdown -r 02:00 "最后提醒:服务器将在1小时后重启。"
-
取消计划:
# 取消刚才设置的凌晨2点重启计划 sudo shutdown -c
| 参数 | 全称 | 功能 |
|---|---|---|
-h |
--halt |
关机 (halt) |
-r |
--reboot |
重启 |
-c |
--cancel |
取消待处理的关机/重启任务 |
-P |
--poweroff |
关闭电源 |
-k |
--no-wall |
只发送警告,不执行关机 |
-H |
--halt |
停止系统 (通常与-h效果相同) |
掌握 shutdown 命令是每个 Linux 用户和管理员的基本技能,它不仅能让你优雅地管理系统,还能避免很多不必要的麻烦。
