核心结论就是 Linux 系统里面关机和重启主要依靠 shutdown reboot halt poweroff init 这几类命令,不同命令底层调用机制不一样,适用场景也有区别,shutdown 是最推荐的通用命令,支持定时执行和提前通知在线用户,reboot 专门用来重启系统,halt poweroff 偏向底层硬件层面的停机操作,init 命令依靠运行级别切换实现关机重启,日常运维优先选择 shutdown,避免直接使用底层命令造成服务来不及保存数据。
之所以区分这么多命令,是因为 Linux 是多用户多任务操作系统,关机或者重启不能直接切断电源,需要先通知所有在线用户,终止正在运行的进程,卸载挂载的文件系统,同步磁盘缓存数据,防止文件损坏,很多新手直接执行强制断电类命令,容易出现磁盘报错文件系统异常,这也是为什么系统提供多种不同等级的关机重启命令,兼顾普通操作和底层调试需求。
基础命令清单
| 命令 | 核心功能 | 是否需要 root 权限 | 特点说明 |
|---|---|---|---|
| shutdown | 关机 定时关机 取消关机 重启 | 一般需要 root | 支持给登录用户发送提示信息,可设置延时时间,运维首选 |
| reboot | 立即重启系统 | 一般需要 root | 执行速度快,没有延时和用户通知功能 |
| halt | 停止系统运行 | 一般需要 root | 停止 CPU 运行,默认不会切断主机电源 |
| poweroff | 关机并切断电源 | 一般需要 root | 等同于 halt 加上断电操作,关机之后主机电源关闭 |
| init 0 | 切换到运行级别 0 实现关机 | 需要 root | 老式 SysV 初始化体系使用,现在 systemd 系统依然兼容 |
| init 6 | 切换到运行级别 6 实现重启 | 需要 root | 老式 SysV 初始化体系使用,现在 systemd 系统依然兼容 |
详细操作步骤
shutdown 关机基础用法
执行 shutdown now 代表立刻关机
执行 shutdown +10 代表十分钟之后自动关机
执行 shutdown 20:30 代表在当天 20 点 30 分定时关机
执行 shutdown c 可以取消已经设置好的定时关机任务
如果要使用 shutdown 完成重启,需要加上 r 参数,写法是 shutdown r now 立刻重启,shutdown r +10 十分钟之后重启
reboot 重启操作
直接输入 reboot 回车,系统就会立刻执行重启流程,系统会同步磁盘数据,停止服务然后重启主机,这个命令没有延时参数,适合单人操作的测试机器。
halt 和 poweroff 操作
halt 执行之后系统内核停止,但是很多主板不会自动断电,机器还保持通电状态,需要手动按电源键关机
poweroff 执行之后内核停止同时通知主板 ACPI 切断主机电源,完成完整关机
init 运行级别方式
init 0 就是切换到 0 号运行级别,0 级别代表系统关机,init 6 是 6 号运行级别代表系统重启,注意新版 systemd 发行版比如 CentOS7 Ubuntu16 之后,运行级别已经被 target 单元替代,init 命令属于兼容保留,新项目尽量不要依赖这种写法。
强制参数补充
如果系统卡死普通关机重启命令没有响应,可以使用强制参数,reboot f 强制重启,poweroff f 强制关机,这类操作会跳过正常的进程保存和文件系统卸载,有概率造成数据丢失,只能作为最后应急手段,正常业务服务器不建议使用。
权限说明
普通用户默认是没有关机重启权限的,需要在命令前面加上 sudo,比如 sudo shutdown now,或者直接切换到 root 账号执行,部分桌面版 Linux 配置好 polkit 授权之后,普通用户也可以在图形界面执行关机重启,但是终端命令依然默认受限。
不同发行版差异
Ubuntu Debian CentOS Rocky AlmaLinux 这些主流发行版,底层现在大多是 systemd,shutdown reboot poweroff 本质都是调用 systemd 对应的单元,命令参数保持兼容,老版本 SysV init 系统的执行逻辑和新版会有细微差别,跨版本运维的时候要留意。
【常见问题】
问题 1 linux 关机和重启命令里面 shutdown r 参数是什么作用
回答 1 linux 关机和重启命令里 shutdown 加上 r 参数就是把原本关机动作改成重启动作,shutdown r now 就是立刻重启,shutdown r +5 就是五分钟之后重启,是 linux 关机和重启命令里最灵活的重启写法。
问题 2 linux 关机和重启命令执行之后能不能撤销操作
回答 2 linux 关机和重启命令里面只有 shutdown 设置的定时任务可以撤销,执行 shutdown c 就可以取消,reboot halt poweroff 这些立即执行的 linux 关机和重启命令一旦回车就开始执行流程,没有办法中途取消。
问题 3 linux 关机和重启命令普通用户为什么提示权限不足
回答 3 linux 关机和重启命令默认属于系统特权操作,普通用户没有权限,需要使用 sudo 前缀提权,或者切换 root 用户,桌面环境可以通过 polkit 策略单独开放普通用户使用 linux 关机和重启命令的权限。
问题 4 linux 关机和重启命令 halt 和 poweroff 有什么核心区别
回答 4 linux 关机和重启命令中 halt 只是停止内核运行,主机电源不会自动切断,poweroff 在 halt 基础上通过 ACPI 通知主板切断电源,是完整的关机操作,选择 linux 关机和重启命令的时候如果需要自动断电优先选 poweroff。
【免责申明】
本文内容仅作为 Linux 技术学习参考,执行 linux 关机和重启命令会终止系统所有运行任务,服务器业务环境执行前请确认已经备份数据,确认在线用户和业务进程状态,错误使用强制类 linux 关机和重启命令可能造成数据损坏业务中断,操作产生的一切后果由操作者自行承担。


