井底圈小蛙
关注科技圈

Linux服务器内核报错无法关机或者重启的状态下强制重启

近期遇到一台Linux服务器,不停内核报错:kernel:NMI watchdog: BUG: soft lockup - CPU#0 stuck for 20s,然后执行所有命令都返回这个报错,包括shutdown与reboot都不行。使用shutdown -r now或者reboot、init 6命令也无法实现重启。

网上查了下“内核软死锁”(soft lockup):

Soft lockup:这个bug没有让系统彻底死机,但是若干个进程(或者kernel thread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。

所以许多命令无法返回。此时执行以下命令可以解决问题:

echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

成功立即重启,问题解决。网上找到的解释:

1. /proc/sys/kernel/sysrq

向sysrq文件中写入1是为了开启SysRq功能。

SysRq代表的是Magic System Request Key。开启了这个功能以后,只要内核没有挂掉,它就会响应你要求的任何操作。但是这需要内核支持(CONFIG_MAGIC_SYSRQ 选项),向/proc/sys/kernel/sysrq中写入0是关闭 SysRq 功能,写入1是开启。

2. /proc/sysrq-trigger

立即重新启动计算机:

echo "b" > /proc/sysrq-trigger

立即关闭计算机:

echo "o" > /proc/sysrq-trigger

导出内存信息:

echo "m" > /proc/sysrq-trigger

导出所有标志位和寄存器信息:

echo "p" > /proc/sysrq-trigger

导出线程状态信息:

echo "t" > /proc/sysrq-trigger

使系统崩溃:

echo "c" > /proc/sysrq-trigger

同步连接系统磁盘:

echo "s" > /proc/sysrq-trigger

重新挂载所有文件系统为只读:

echo "u" > /proc/sysrq-trigger

圈小蛙现已开通Telegram。单击此处加入我们的频道 (@quanxiaowa)并随时了解最新科技圈动态!

除特别注明外,本站所有文章均系根据各大境内外消息渠道原创,转载请注明出处。
文章名称:《Linux服务器内核报错无法关机或者重启的状态下强制重启》
文章链接:https://www.qxwa.com/linux-server-kernel-error-report-can-not-shut-down-or-reboot-the-state-forced-reboot.html
分享到: 生成海报

评论 抢沙发

科技圈动态,尽在圈小蛙

联系我们关注我们