zzxworld

Linux 关机和重启命令指南

Linux 关机和重启命令指南

使用电脑免不了关机和重启,在 Linux 系统上同样也离不了。如果使用的是图形化界面的桌面版 Linux,这个操作会比较简单,鼠标点点就能搞定。但对于服务器用途的 Linux,只能依赖于命令操作。本文总结了几个在 Linux 下常用的关机和重启命令,以及它们的使用方法。

shutdown

shutdown 是一个带定时功能的关机和重启命令。默认使用不带任何选项执行此命令会并不会立马开始关机,而是提示在 1 分钟后开始执行关机操作:

zzxworld@debian:~$ sudo shutdown
Shutdown scheduled for Tue 2022-10-11 09:06:44 CST, use 'shutdown -c' to cancel.

上面是我在 09:05 分执行的命令,可以看到提示安排在 09:06 分执行。而且使用 -c 选项可以取消这次关机操作:

sudo shutdown -c

如果想在 20 分钟后关机,可以这样执行命令:

sudo shutdown +20

还可以安排的更远一点,比如下午两点半关机:

sudo shutdown 14:30

如果想立马关机,可以把时间指定为 0 或是使用 now 字符串值:

sudo shutdown +0
sudo shutdown now

使用此命令重启的选项如下:

sudo shutdown -r

看完了上面的例子,回头来看看 shutdown 命令的格式:

shutdown [选项...] [时间] [消息...]

其中可选参数 [时间] 是一个表示时间的字符串。可选参数 [消息...] 可用于设置在关机前发送给所有登录用户的警告信息。

时间字符串可以是 hh:mm 格式, 表示在指定的时间点"小时:分钟"(24小时制)执行关机动作。 时间字符串也可以是 +m 格式, 表示从现在起的 m 分钟之后执行关机动作。 now+0 的含义相同,表示立即触发关机流程。如果未指定时间字符串, 那么 +1 是默认值。

注意,如果要设置 [消息...] 参数, 那么必须同时设置 [时间] 参数。

如果使用了 [时间] 参数, 那么在关机流程开始前 5 分钟将会创建 /run/nologin 文件,以禁止用户登录。

shutdown 完整的命令选项如下:

缩写 完整名称 说明
-H --halt 停机(关闭系统但是不切断电源)
-P --poweroff 关机(关闭系统并且切断电源), 这是默认值。
-r --reboot 重新启动。
-h 等价于使用 --poweroff 选项, 除非明确使用了 --halt 选项。
-k 不实际执行关机动作, 而是仅仅发送警告消息。
--no-wall 不在关机前发送警告消息
-c 取消一个已经在计划中的关机动作。 用于取消一个先前未使用 "+0" 或 "now" 参数的 shutdown 命令。
--help 显示简短的帮助信息并退出。

halt / poweroff / reboot

haltpoweroffreboot 同样也是 Linux 系统上用来执行关机和重启的命令。这里把它们三个放到一起是因为它们除了名称和默认行为上的区别,在命令使用方式包括选项上没有任何区别。可以把它们看作是同一个命令的不同语义化映射。halt 表示停机,poweroff 代表关机, 而 reboot 则是重新启动。

来看看它们的命令格式:

halt [选项...]
poweroff [选项...]
reboot [选项...]

格式上一致,命令选项也一模一样:

缩写 完整名称 说明
--halt 停机(关闭系统但是不切断电源)
-p --poweroff 关机(关闭系统并且切断电源)
--reboot 重新启动。
-f --force 强制立即停机/关机/重新启动,而不与 init 进程通信。
-w --wtmp-only 仅向 wtmp 中写入一条关机记录, 而不实际执行关机动作。
-d --no-wtmp 不向 wtmp 中写入任何关机记录。
-n --no-sync 在关机前不刷写磁盘缓存。
--no-wall 在关机前不发送警告信息。
--help 显示简短的帮助信息并退出。

以重启操作举例,这三个命令都能实现:

reboot
halt --reboot
poweroff --reboot

关机也是类似:

poweroff
halt -p
reboot -p

使用建议

通常情况下,建议使用 reboot 命令重启,poweroff 来关机。它们的名称比较符合使用时的操作意图,也很好记忆。在有需要延时或排期执行关机,或是重启操作时,就只有 shutdown 命令才能满足要求了。