内核 Panic 后默认不自动重启,需显式配置 kernel.panic 值(如设为 10)才启用秒级自动重启;该机制由内核直接触发硬件复位,不经过用户空间、systemd 或 cron。

内核 Panic 后默认不自动重启,必须显式配置 kernel.panic 才能触发自动 reboot。 这不是 systemd 或 cron 能管的事,它发生在内核崩溃瞬间,属于最底层的恢复机制。
设置 /proc/sys/kernel/panic 生效时间
该值表示内核 Panic 发生后等待多少秒再执行自动重启。设为 0 表示禁用自动重启(默认行为),设为正整数(如 10)才启用。
- 临时生效(重启丢失):
echo 10 > /proc/sys/kernel/panic - 永久生效:向
/etc/sysctl.conf追加kernel.panic = 10,再运行sudo sysctl -p - 验证是否写入成功:
cat /proc/sys/kernel/panic应输出10
确保 sysrq 已启用(否则无法手动触发测试)
虽然 Panic 自动重启不依赖 SysRq,但你没法验证效果——除非先制造一次 Panic。而 echo c > /proc/sysrq-trigger 需要 kernel.sysrq 开启。
- 临时启用:
echo 1 > /proc/sys/kernel/sysrq - 永久启用:在
/etc/sysctl.conf加kernel.sysrq = 1,再sudo sysctl -p - 注意:某些云主机或容器环境会硬性禁用 SysRq,
cat /proc/sys/kernel/sysrq返回0即不可用
为什么 reboot 命令或 systemd 服务重启不等于 Panic 自动重启
这是最容易混淆的点:Panic 自动重启是内核自己调用硬件 reset 信号,不经过用户空间、不走 init 系统、不执行 shutdown 脚本。它和以下行为完全无关:
-
sudo reboot或sudo systemctl reboot:走完整关机流程,安全但慢 - systemd 的
Restart=always:只对用户态进程有效,对内核崩溃无效 - crontab 定时
/sbin/reboot:依赖 cron 服务正常运行,Panic 时 cron 早已不存在
真正关键的只有两个文件:/proc/sys/kernel/panic 和(可选但推荐的)/proc/sys/kernel/sysrq。其他所有“重启”方案都在用户空间打转,碰不到内核 Panic 这个层级。


















