Linux命令-reboot(重启系统)

Linux命令-reboot(重启系统)

    • 回滚与安全措施
    • 命令语法
    • 常用选项
    • 场景化实例
      • [1. 安全重启(推荐方式)](#1. 安全重启(推荐方式))
      • [2. 强制重启(紧急情况)](#2. 强制重启(紧急情况))
      • [3. 记录重启而不实际执行](#3. 记录重启而不实际执行)
      • [4. 重启前安全检查脚本](#4. 重启前安全检查脚本)
      • [5. 远程重启多台服务器](#5. 远程重启多台服务器)
      • [6. 使用 systemctl 重启](#6. 使用 systemctl 重启)
    • 与其他重启方式对比
    • 最佳实践

快速参考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                                   # 如需取消
相关推荐
骑士雄师6 小时前
大模型:MessagesPlaceholder 是什么?
服务器·windows·microsoft
say_fall6 小时前
【Git 精品详解】企业规范:企业级开发模型、Git Flow、发版流程规范、Code Owner 制度、事故应急回滚
大数据·linux·服务器·git·学习·elasticsearch
Helen_cai6 小时前
OpenHarmony CustomDialog 自定义弹窗全场景开发与 API23 + 适配优化
运维·服务器·microsoft
SkyWalking中文站6 小时前
认识 Horizon UI · 15/17:用模板定制控制台
运维·监控·自动化运维
一杯奶茶¥6 小时前
Ubuntu系统镜像各个版本下载Ubuntu镜像合集资源Linux系统镜像乌班图Linux系统镜像
linux·运维·ubuntu·镜像·;inux镜像·ubuntu镜像
运维行者_15 小时前
企业无线网络监控的挑战与智能化演进趋势
大数据·运维·服务器·网络·数据库
2603_9552797015 小时前
Cursor + GitOps:自动化运维新姿势
运维·自动化
Waay16 小时前
面试口述版:个人对 Prometheus 完整理解
运维·学习·云原生·面试·职场和发展·kubernetes·prometheus
三84416 小时前
文件查找/文件压缩/解压缩
linux·运维·服务器
小猪写代码16 小时前
Linux 管道(Pipeline)作业
linux·运维·服务器