reboot 是一个非常基础且常用的 Linux 命令,它的核心功能就是重新启动计算机,虽然看起来简单,但它背后涉及许多细节,例如权限、系统状态、重启方式等。

命令的基本用途
reboot 命令用于关闭系统并重新启动,它会正常关闭所有正在运行的进程、卸载文件系统,然后重新引导计算机。
基本语法
reboot 命令的语法非常简单:
reboot [选项]
在不带任何选项的情况下,直接执行 reboot 命令,系统会尝试以正常、安全的方式重启。
常用选项
掌握这些选项能让你在不同场景下更灵活地使用 reboot 命令。

| 选项 | 长选项 | 描述 |
|---|---|---|
-h |
--halt |
关机而不是重启。 |
-p |
--poweroff |
完全关闭电源,在支持电源管理的系统上,这会切断电源。 |
-f |
--force |
强制重启,不调用 shutdown,直接调用 kernel 重启功能,这会跳过正常关机流程,可能导致数据丢失,但在系统无响应时很有用。 |
-w |
--wtmp-only |
模拟重启过程,但不真正重启,只更新 wtmp (登录) 和 utmp (当前会话) 日志文件,用于测试。 |
-d |
--no-wtmp |
不更新 wtmp 日志文件。 |
-n |
---exec |
不调用 shutdown,直接执行 reboot 系统调用,比 -f 更直接,风险也更高。 |
-i |
---init |
在重启前关闭所有网络接口。 |
--help |
显示帮助信息并退出。 | |
--version |
显示版本信息并退出。 |
使用示例
示例 1:正常重启
这是最常见的用法,以安全的方式重启系统。
reboot
或者
sudo reboot
注意:在现代大多数 Linux 发行版(如 Ubuntu, CentOS, Debian 等)中,普通用户通常没有权限直接执行
reboot,你需要使用sudo来获取管理员权限,这是为了防止普通用户误操作导致系统服务中断。
示例 2:强制重启
当系统卡死,无响应时,可以强制重启,这会跳过所有服务的正常关闭流程,可能导致未保存的数据丢失。

sudo reboot -f
示例 3:模拟重启
如果你想测试 reboot 命令会对系统日志产生什么影响,但又不想真的重启,可以使用 -w 选项。
reboot -w
执行后,你可以检查 /var/log/wtmp 文件,会发现它被更新了,但系统本身并没有重启。
示例 4:关机并断电
如果你想关闭系统并切断电源(而不是停留在 GRUB 引导界面),可以使用 -p 选项。
sudo reboot -p
这和 sudo poweroff 或 sudo shutdown -h now 的效果类似。
示例 5:仅关机
如果你只想关机,不想重启,使用 -h 选项。
sudo reboot -h
这和 sudo halt 的效果类似。
与 shutdown 和 init 命令的比较
在 Linux 中,除了 reboot,还有其他几个可以重启/关机的命令,理解它们之间的区别很重要。
| 命令 | 描述 | 优点/缺点 | 推荐场景 |
|---|---|---|---|
reboot |
直接重启,简单直接。 | 缺点:没有警告,直接关机,可能会中断其他用户的工作。 | 个人桌面环境,或服务器上无其他用户时。 |
shutdown |
计划性关机/重启,可以设置时间,并通知所有登录用户。 | 优点:最安全、最礼貌的方式,会发送警告信息,并给用户留出保存工作的时间。 | 服务器环境首选,计划维护时使用。 |
halt |
停止系统,停止 CPU 和活动进程,但通常不断电。 | 比较老旧的命令,功能上与 shutdown -h 类似。 |
较少单独使用,shutdown 是更好的替代品。 |
poweroff |
关机并断电,功能上与 shutdown -h now 或 reboot -p 相同。 |
明确表示要断电,语义清晰。 | 需要完全关闭电源时使用。 |
init |
通过改变系统的运行级别来关机或重启。init 0 (关机), init 6 (重启)。 |
非常老旧,是基于 System V (SysVinit) 的方式,在现代使用 systemd 的系统中不推荐。 |
维护非常老旧的系统。 |
- 日常使用(个人电脑):
sudo reboot最方便。 - 服务器维护:
sudo shutdown -r +5 "系统将在5分钟后重启,请保存工作"是最佳选择,因为它会通知所有用户。 - 紧急情况(系统卡死):
sudo reboot -f或直接按电源键。
reboot 命令的工作原理(简述)
当你执行 reboot 命令时,通常会触发以下流程:
- 权限检查:
reboot命令需要超级用户权限,因此通常需要sudo。 - 调用
shutdown:在大多数现代发行版中,reboot命令本身是一个指向systemctl或shutdown命令的包装器,它会调用shutdown -r now来执行重启。 - 发送信号:
shutdown会向init进程(在现代系统上是systemd的init)发送信号,请求将系统运行级别切换到6(reboot)。 - 系统关机:
systemd收到信号后,会按照预设的顺序,反向停止所有服务、卸载文件系统、同步磁盘。 - 重启:
systemd会调用底层的reboot()系统调用,CPU 执行重启指令,计算机开始重新启动。
reboot 是一个强大而直接的命令,用于重启 Linux 系统,虽然它很简单,但通过了解其选项和与其他命令(如 shutdown)的对比,你可以在不同场景下做出更安全、更合适的选择,对于服务器管理,shutdown 通常是更优的选择,因为它考虑了多用户环境。
