> For the complete documentation index, see [llms.txt](https://man.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://man.bsdcn.org/man8/poweroff.8.md).

# poweroff.8

REBOOT(8)

FreeBSD System Manager's Manual

REBOOT(8)

## 名称

`reboot`, `halt`, `fastboot`, `fasthalt` —

停止和重新启动系统

## 概要

`halt` \[`-DflNnpq`] \[`-e` variable=value] \[`-k` kernel] \[`-o` options] `reboot` \[`-cDdflNnpqr`] \[`-e` variable=value] \[`-k` kernel] \[`-o` options] `fasthalt` \[`-DflNnpq`] \[`-e` variable=value] \[`-k` kernel] \[`-o` options] `fastboot` \[`-dDflNnpq`] \[`-e` variable=value] \[`-k` kernel] \[`-o` options]

## 描述

`halt` 和 `reboot` 实用程序分别用于停止和重新启动系统。

这两种实用程序都有两种不同的操作模式。在正常模式下，它们向 init(8) 进程发送信号，由该进程关闭正在运行的服务并停止或重新启动系统。在快速模式下，它们将文件系统缓存刷新到磁盘，向所有正在运行的进程发送 `SIGTERM`（随后发送 `SIGKILL`），然后自行停止或重新启动系统。服务是被终止而非被关闭的，这可能导致数据丢失。

无论哪种模式，该操作都会被记录，包括将关闭记录写入用户记账数据库。

选项如下：

[`-c`](#c)

系统将关闭电源，然后在可能的情况下将其重新打开。如果断电操作失败，系统将正常停止或重新启动，具体取决于是否调用了 `halt` 或 `reboot`。目前，只有 ipmi(4) 驱动程序实现电源循环功能，并且仅在具有支持电源循环的 BMC 的硬件上实现。与关机不同，支持电源循环的硬件数量很少。

`-D`

删除现有的 `nextboot` 配置并退出。

[`-d`](#d)

系统被请求创建故障转储。此选项仅在重新启动时受支持，除非先前已使用 dumpon(8) 指定了转储设备，否则该选项无效。

[`-e`](#e) variable=value

在 loader 和内核环境中将 variable 设置为 value。如果 value 尚未用双引号括起来，则在写入 `nextboot` 配置之前会添加双引号。如果 value 包含对 shell 或 loader 配置解析代码特殊的字符，则需要格外小心。

[`-f`](#f)

强制模式。通常，`halt` 或 `reboot` 会检查下一个内核是否存在，以及 **/var/run/noshutdown** 文件是否不存在。如果没有此标志，当其中一项检查失败时，操作将被拒绝。

[`-k`](#k) kname

在下次系统引导时引导指定的内核 kname。这是一个一次性选项， *default* 内核将在后续引导时启动。如果 **/boot/kname/kernel** 不存在，则不会执行 `reboot` 或 `halt`，除非指定了 `-f` 标志。

[`-l`](#l)

停止或重新启动操作 **不** 记录到系统日志中。此选项适用于诸如 shutdown(8) 等调用 `reboot` 或 `halt` 并自行记录的应用程序。

`-N`

在初始进程清理期间不会刷新文件系统缓存，但是内核级别的 reboot(2) 仍会使用同步进行处理。此选项对于在设备可能不可用时执行“尽力而为”的重新启动很有用。这可能在设备已断开连接时发生，例如使用 iscsi(4)。

[`-n`](#n)

文件系统缓存未刷新。可能不应该使用此选项。

[`-o`](#o) options

此选项允许为下次引导传递内核标志。

[`-p`](#p)

如果可以，系统将关闭电源。如果断电操作失败，系统将正常停止或重新启动，具体取决于是否调用了 `halt` 或 `reboot`。

[`-q`](#q)

系统被快速且不正常地停止或重新启动，并且仅执行文件系统缓存的刷新（如果未指定 `-n` 选项）。可能不应该使用此选项。

[`-r`](#r)

系统终止所有进程，卸载所有文件系统，安装新的根文件系统，并开始通常的启动顺序。使用 kenv(1) 更改 vfs.root.mountfrom 后，可以使用 `reboot` `-r` 更改根文件系统，同时保留内核状态。这需要加载 tmpfs(4) 内核模块，因为 init(8) 在卸载旧根之后但在新根就位之前需要一个地方来存储自己。

`fasthalt` 和 `fastboot` 实用程序分别以快速模式调用 `halt` 和 `reboot`。

shutdown(8) 实用程序不仅可以立即停止或重新启动系统，还可以安排在未来停止或重新启动，并且与 `halt` 和 `reboot` 不同，它会提前警告用户即将到来的厄运。

## 实例

用从 **/dev/ada0s1a** 挂载的 UFS 替换当前根文件系统：

```sh
kenv vfs.root.mountfrom=ufs:/dev/ada0s1a
reboot -r
```

这种机制也可以与 NFS 一起使用，但需要注意的是它仅适用于 NFSv4，并且需要一个数字 IPv4 地址：

```sh
kenv vfs.root.mountfrom=nfs:192.168.1.1:/share/name
reboot -r
```

## 参见

kenv(1), reboot(2), getutxent(3), ipmi(4), boot(8), dumpon(8), nextboot(8), savecore(8), shutdown(8), sync(8)

## 历史

`reboot` 实用程序出现在 4.0BSD 中。

历史上，当系统需要在正常运行过程中被干净地停止或重新启动时，使用 shutdown(8) 实用程序，而 `halt` 和 `reboot` 实用程序只是在单用户模式下或在异常情况使正常关闭不可行时使用的粗暴工具。随着其他操作系统取消了这种区别，并且很明显许多用户并不了解这一点，在使用 `reboot` 时以为它会执行干净的关闭，因此它被重写以符合这一期望。

December 8, 2025

FreeBSD 13.1-RELEASE
