Linux命令-reboot(重启系统)
快速参考 :reboot 命令用于安全或强制重启 Linux 操作系统。reboot 会终止所有运行中的进程、卸载文件系统并重启硬件,是系统管理中需要谨慎使用的高危命令。
危险警告 :执行
reboot会立即中断所有用户会话和运行中的服务,可能导致数据丢失。生产环境务必先通知用户、保存数据后再执行。
回滚与安全措施
如在执行前想取消:
reboot执行前可用shutdown -c取消计划的重启- 使用
shutdown -r +5 "维护中"代替直接reboot,给自己 5 分钟缓冲- 关键 :重启前用
sync同步磁盘缓存
bash
# 取消计划重启
sudo shutdown -c
# 延迟重启(推荐替代 reboot)
sudo shutdown -r +5 "系统将在5分钟后重启,请保存工作"
# 取消上面的延迟重启
sudo shutdown -c
命令语法
bash
reboot [选项]
常用选项
| 选项 | 说明 |
|---|---|
-f |
强制重启,不调用 shutdown |
-p |
重启后关闭电源(相当于 poweroff) |
--halt |
停止系统但不关闭电源 |
-w |
只写 wtmp 记录,不实际重启 |
-n |
重启前不同步磁盘(危险) |
场景化实例
1. 安全重启(推荐方式)
bash
# 标准重启
sudo reboot
# 使用 shutdown 更安全(通知用户)
sudo shutdown -r now "紧急维护,系统即将重启"
# 延迟重启并广播消息
sudo shutdown -r +10 "系统计划在10分钟后重启进行安全更新"
sudo wall "请尽快保存您的工作!"
2. 强制重启(紧急情况)
bash
# 强制重启,跳过 init 系统
sudo reboot -f
# 或使用 magic SysRq(死机时)
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
# 或 Alt+SysRq+REISUB(安全重启序列):
# R: 键盘 raw 模式
# E: SIGTERM 所有进程
# I: SIGKILL 所有进程
# S: 同步磁盘
# U: 重新挂载只读
# B: 重启
3. 记录重启而不实际执行
bash
# 模拟重启,仅写入日志
sudo reboot -w
# 检查 wtmp 日志
last reboot | head -5
# 查看系统启动时间
uptime
who -b
4. 重启前安全检查脚本
bash
#!/bin/bash
# 安全重启检查脚本
echo "===== 重启前系统检查 ====="
# 检查是否有其他用户登录
echo "当前登录用户:"
who -u
# 检查重要服务状态
for svc in nginx mysql docker; do
systemctl is-active --quiet "$svc" && echo "[运行中] $svc" || echo "[已停止] $svc"
done
# 同步磁盘
echo "同步磁盘缓存..."
sync
# 确认操作
read -p "确认重启系统?(输入 YES 确认): " confirm
if [ "$confirm" = "YES" ]; then
echo "系统将在3秒后重启..."
sleep 3
sudo reboot
else
echo "已取消重启"
fi
5. 远程重启多台服务器
bash
#!/bin/bash
# 批量重启服务器(危险,谨慎使用)
SERVERS=("web01" "web02" "app01" "app02")
DELAY=0
# 必须先重启从节点
echo "===== 批量重启计划 ====="
for server in "${SERVERS[@]}"; do
echo "计划重启: $server (延迟${DELAY}分钟)"
((DELAY+=5))
done
read -p "确认执行?(yes/no):" answer
if [ "$answer" != "yes" ]; then
echo "已取消"
exit 0
fi
DELAY=0
for server in "${SERVERS[@]}"; do
echo "正在通知 $server 计划重启..."
ssh "$server" "sudo shutdown -r +${DELAY} '计划重启维护'"
echo "$server 已设置为 ${DELAY} 分钟后重启"
((DELAY+=5))
done
echo "所有服务器已设置计划重启"
6. 使用 systemctl 重启
bash
# 现代 Linux 推荐方式
sudo systemctl reboot
# 包含固件设置
sudo systemctl reboot --firmware-setup
# 紧急模式
sudo systemctl reboot --force --force
与其他重启方式对比
| 命令 | 特点 | 推荐场景 |
|---|---|---|
reboot |
简单直接 | 单机/桌面 |
shutdown -r |
支持延迟/广播 | 服务器 |
systemctl reboot |
Systemd 方式 | 现代 Linux |
init 6 |
SysV 风格 | 旧系统 |
bash
# 各种重启方式
# 方式1:reboot
sudo reboot
# 方式2:shutdown
sudo shutdown -r +1 "1分钟后重启"
# 方式3:systemd
sudo systemctl reboot
# 方式4:init
sudo init 6
# 方式5:proc
echo b | sudo tee /proc/sysrq-trigger # 遇到内核挂起时
最佳实践
生产环境用
shutdown -r而非reboot,因为它会向所有用户广播警告并给予保存时间。
bash
# 生产环境推荐流程
sudo wall "系统将在30分钟后重启维护,请保存工作" # 提前通知
sudo shutdown -r +30 "计划重启维护" # 设置计划
# ... 等待 ...
sudo shutdown -c # 如需取消