在Linux系统中,系统重启可以通过多种方式实现,每种方式有不同的底层机制和应用场景。以下是详细的分类和说明:
reboot
命令reboot [选项]
-f
或 --force
:强制重启(跳过正常关机流程)。-w
:仅写入重启记录到 /var/log/wtmp
,不实际重启。init
进程(或 systemd
)发送信号触发关机脚本。/var/log/messages
或 journalctl
(systemd系统)。shutdown
命令shutdown -r [时间] [消息]
shutdown -r +5 "系统将在5分钟后重启"
)。/sbin/reboot
或直接通知 init/systemd
。systemctl
(systemd系统)systemctl reboot
Alt+SysRq+REISUB
R
(切换键盘模式)→ E
(终止进程)→ I
(杀死进程)→ S
(同步磁盘)→ U
(卸载文件系统)→ B
(重启)。/proc/sys/kernel/sysrq
(值为 1
启用)。ipmitool power reset
)远程控制服务器电源。kexec
快速重启bash
kexec -l /boot/new_kernel --initrd=/boot/new_initrd
kexec -e
bash
echo 1 > /proc/sys/kernel/panic_on_oops # 崩溃时触发panic
echo 10 > /proc/sys/kernel/panic # 10秒后自动重启
bash
modprobe softdog # 加载软件看门狗模块
echo 1 > /dev/watchdog
AC Power Recovery
设为 Always On
。方式 | 安全等级 | 适用场景 | 是否清理进程 | 日志完整性 |
---|---|---|---|---|
shutdown -r |
高 | 计划维护 | 是 | 完整 |
reboot -f |
低 | 快速重启(可能丢数据) | 否 | 部分丢失 |
Magic SysRq | 中 | 系统卡死 | 部分清理 | 可能不完整 |
kexec |
中高 | 内核热替换 | 是 | 完整 |
shutdown
或 systemctl reboot
,确保服务优雅停止。kexec
以节省时间。$?
确认重启是否成功,例如:
bash
systemctl reboot || echo "重启失败,尝试备用方法"
通过理解这些方式的差异,可以更精准地选择适合场景的重启方法,平衡安全性与效率。