shutdown 命令是 Linux 系统中用于安全关机或重启的标准命令,与直接使用 reboot 或 poweroff 不同,shutdown 会通知所有登录用户系统即将关闭,并可以设置一个延迟时间,给用户保存工作的时间。

(图片来源网络,侵删)
基本语法
shutdown [选项] [时间] [警告信息]
核心参数详解
时间参数
这是 shutdown 命令最关键的部分,它决定了系统何时执行关机或重启操作。
a) +分钟数 (指定多少分钟后执行)
这是最常用的方式。+5 表示 5 分钟后执行。
# 5分钟后关机 sudo shutdown +5 # 10分钟后重启 sudo shutdown -r +10
b) hh:mm (指定具体时间)

(图片来源网络,侵删)
你可以指定一个具体的时间点(24小时制),系统会计算从现在到那个时间点之间的时间差,并作为倒计时。
# 在晚上11点关机 sudo shutdown 23:00 # 在明天凌晨1点重启 sudo shutdown 01:00
c) now (立即执行)
如果你想让它立即执行,可以使用 now,这和使用 poweroff 或 halt 效果类似,但仍然会发送通知。
# 立即关机 sudo shutdown now # 立即重启 sudo shutdown -r now
操作参数
这些参数用来指定系统在倒计时结束后要执行的具体操作。

(图片来源网络,侵删)
| 参数 | 全称 | 描述 | 示例 |
|---|---|---|---|
-h |
--halt |
关机,停止系统并切断电源,这是默认行为,如果既没有 -h 也没有 -r,且没有指定 poweroff,则默认为关机。 |
sudo shutdown -h now |
-r |
--reboot |
重启,停止系统然后重新启动。 | sudo shutdown -r now |
-P |
--poweroff |
切断电源,明确地告诉系统在halt之后切断电源,现代系统上 -h 通常也等同于 -P。 |
sudo shutdown -P +5 |
-c |
--cancel |
取消,取消一个已经计划好的关机或重启任务。 | sudo shutdown -c |
其他常用参数
| 参数 | 全称 | 描述 |
|---|---|---|
-k |
--no-halt |
只发送警告,不真正关机,这会向所有用户发送警告信息,但系统本身不会关机或重启,通常用于测试或提醒。 |
-H |
--halt |
与 -h 类似,表示停止系统,但不保证会切断电源,在现代 Linux 发行版中,-h 通常已经包含了切断电源的操作。 |
--help |
显示帮助信息。 | |
--version |
显示版本信息。 |
常用命令组合示例
-
计划在 5 分钟后关机,并自定义警告信息:
sudo shutdown +5 "服务器将在5分钟后进行维护,请立即保存您的工作并退出。"
系统会广播这条消息给所有终端用户。
-
在指定时间(午夜12点)重启服务器:
sudo shutdown 00:00 # 或者更明确地 sudo shutdown -r 00:00
-
立即重启系统:
sudo shutdown -r now
-
取消一个已计划的关机任务: 假设你之前已经执行了
sudo shutdown +10,现在想取消它:sudo shutdown -c
取消后,最好再给用户发个通知,告知他们计划已取消。
-
只发送警告,不执行任何操作(用于测试):
sudo shutdown -k +2 "这是一条测试警告,系统不会关机。"
与 reboot、halt、poweroff 的对比
| 命令 | 描述 | 是否有通知 | 是否有延迟 |
|---|---|---|---|
shutdown |
安全、可控的关机/重启,会通知所有用户。 | 是 | 是 |
reboot |
立即重启。 | 否 | 否 |
halt |
立即停止系统,不切断电源。 | 否 | 否 |
poweroff |
立即停止系统并切断电源。 | 否 | 否 |
重要提示:在现代 Linux 系统中,reboot、halt 和 poweroff 通常都是 systemd 的符号链接或别名,它们的行为可能与传统行为略有不同,但基本功能一致,对于生产环境,尤其是在多用户服务器上,强烈推荐使用 shutdown,因为它能避免用户因未及时收到通知而丢失工作。
重要注意事项
- 需要
sudo权限:关机或重启系统需要超级用户权限,因此必须在命令前加上sudo。 -c的使用:取消一个任务时,如果你忘记了之前设置的警告信息,直接使用sudo shutdown -c即可,有时,为了明确取消,可以带上之前的信息的一部分,但通常不需要。-k的陷阱:-k参数只发送消息,不执行关机,很容易被误用,请务必清楚这一点,避免在真正需要关机时只用了-k。systemd的影响:在systemd成为 init 系统主流的今天,shutdown命令本身的功能没有变,但它底层调用的是systemd的相关接口,了解这一点有助于你理解为什么reboot等命令的行为也发生了变化。
总结表格
| 功能 | 命令示例 |
|---|---|
| N分钟后关机 | sudo shutdown +N |
| N分钟后重启 | sudo shutdown -r +N |
| 指定时间关机 | sudo shutdown hh:mm |
| 指定时间重启 | sudo shutdown -r hh:mm |
| 立即关机 | sudo shutdown now 或 sudo shutdown -h now |
| 立即重启 | sudo shutdown -r now |
| 取消计划任务 | sudo shutdown -c |
| 仅发送警告 | sudo shutdown -k +N "消息" |
希望这份详细的解释能帮助你完全掌握 Linux 的 shutdown 命令!
