You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在RHEL中触发内核Panic且触发后不重启系统

如何触发内核Panic且阻止系统自动重启

看起来你遇到的问题是即使设置了kernel.panic=0,触发Panic后系统还是会自动重启——这大概率是因为有其他系统机制(比如硬件看门狗)或者内核参数没有正确生效导致的。下面是分步解决方法:

1. 确保kernel.panic参数正确生效

这个参数定义了内核Panic后等待多少秒重启,设置为0表示永不重启。先临时生效:

echo 0 > /proc/sys/kernel/panic
# 或者用sysctl命令
sysctl -w kernel.panic=0

如果想让设置永久生效,编辑/etc/sysctl.conf,添加或修改:

kernel.panic = 0

执行sysctl -p让配置立即生效。

2. 检查并禁用硬件看门狗

很多服务器或主板自带硬件看门狗,当内核Panic后,看门狗因为收不到内核的心跳信号,会强制重启系统。你需要先禁用它:

  • 查看是否加载了看门狗模块:
    lsmod | grep watchdog
    
    常见的模块名有watchdogiTCO_wdthpwdt等。
  • 卸载对应的模块(以iTCO_wdt为例):
    rmmod iTCO_wdt
    
  • 如果卸载失败(提示被占用),可以尝试临时关闭看门狗:
    echo V > /dev/watchdog
    
    这个命令会向看门狗设备发送关闭信号,多数系统支持此操作。

3. 确保SysRq命令被允许触发Panic

检查kernel.sysrq参数,它控制哪些SysRq命令可以执行:

sysctl kernel.sysrq

如果值为0,表示完全禁用SysRq;你需要设置为1(允许所有SysRq命令),或者至少设置为包含位2的值(允许触发Panic的c命令):

sysctl -w kernel.sysrq=1

4. 触发内核Panic

完成以上设置后,再执行触发命令:

echo c > /proc/sysrq-trigger

此时系统应该会进入Panic状态,显示内核堆栈信息,并且不会自动重启。


内容的提问来源于stack exchange,提问作者Azhar Hussain

火山引擎 最新活动