linux内核panic默认不自动重启,需配置kernel.panic参数启用;设为0禁用,正整数如10表示等待秒数后硬复位,可通过/proc/sys、sysctl.conf或grub参数永久设置,并可配合kdump实现先转储再重启。

Linux 内核 panic 时默认不会自动重启,必须显式配置才能触发硬复位。这个机制由内核直接控制,不经过 systemd、cron 或任何用户空间服务,属于最底层的恢复行为。
设置 kernel.panic 参数启用自动重启
核心参数是 kernel.panic,它定义 panic 发生后等待多少秒执行硬件级重启:
- 设为 0:禁用自动重启(默认值),系统卡死不动
- 设为正整数(如 10):panic 后等待对应秒数,再调用
emergency_restart()强制复位
临时生效(重启后丢失):sudo echo 10 > /proc/sys/kernel/panic
永久生效:
在 /etc/sysctl.conf 或 /etc/sysctl.d/99-panic.conf 中添加一行:kernel.panic = 10
然后运行 sudo sysctl -p 加载配置。
通过 GRUB 启动参数统一设定
适用于所有后续启动,尤其适合批量部署或无法提前登录的环境:
- 编辑
/etc/default/grub,修改GRUB_CMDLINE_LINUX行,在引号内追加panic=10 - 示例:
GRUB_CMDLINE_LINUX="rhgb quiet panic=10" - 执行
sudo update-grub(Debian/Ubuntu)或sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS) - 重启后即生效
配合 kdump 实现“先转储、再重启”
若需保留 vmcore 进行根因分析,不能让 panic 后立刻重启,否则 dump 会被中断:
- 确保
kdump已安装并启用(如systemctl enable --now kdump) - 在
/etc/kdump.conf中设置default reboot - 将
kernel.panic设为足够长的值(如60),留给 kdump 完成内存镜像保存 - kdump 完成后会主动触发 reboot,此时内核 panic 的自动重启逻辑被跳过
验证与测试要点
仅配置不验证等于未生效。关键操作包括:
- 确认当前值:
cat /proc/sys/kernel/panic应输出设定数值 - 启用 SysRq(否则无法手动触发 panic 测试):
echo 1 > /proc/sys/kernel/sysrq,并写入/etc/sysctl.d/99-sysrq.conf持久化 - 安全测试命令:
echo c > /proc/sysrq-trigger(仅限测试环境) - 重启后检查 dmesg 是否含
Rebooting in X seconds..日志











