linux卡住freeze解决办法

状况

踢出用户后启动服务器,在机房点击键盘没有反应,等待一个小时服务器一直卡在下面界面。

一些底层软件的 bug 也可能导致一些奇怪的死机问题。

Linux 运行过程中(为了提高性能)会把大量的数据暂时放在内存缓存中,而不是实时同步写入到磁盘,Linux 根据情况只有在需要(触发某条件)的时候才写入磁盘,所以这个时候挂机,数据还留在内存,没有办法及时写到磁盘,强制断电重启会造成数据不一致、部分数据丢失、文件系统损坏等。如果强制重启可能会导致ext4分区损坏。

解决方法

键盘上一般都有一个键,SysRq,如下图所示

当然有个条件是,系统虽然罢工停止了对大部分服务的响应,但仍然能处理键盘的中断请求。SysRq (System request) 常被称为 Magic SysRq key,在 Linux 下它被定义为一系列按键组合,之所以说它 magic,是因为它常能在系统挂起、多数服务都无法响应的时候做点事(预定义的操作),而且能在磁盘数据安全的情况下完成重启,除此之外还能捕获一些有用的系统运行信息。

首先确认当前使用的 Linux 内核支持 SysRq:

grep "CONFIG_MAGIC_SYSRQ" /boot/config-`uname -r`

 如果CONFIG_MAGIC_SYSRQ=y就说明支持这种方式重启

 

 SysRq 安全重启的推荐按键组合是 Alt + SysRq + R/E/I/S/U/B,同时按下 Alt 键和 SysRq 键,加上R/E/I/S/U/B (不区分大小写)中的一个键。

R – 把键盘设置为 ASCII 模式
E – 向除 init 外所有进程发送 SIGTERM 信号
I – 向除 init 外所有进程发送 SIGKILL 信号
S – 磁盘缓冲区同步
U – 重新挂载为只读模式
B – 重启系统

需要注意的是这些按键之间有顺序,而且按键之间有时间间隔(因为要等待前一个操作的完成),推荐的时间间隔是

Alt + SysRq +R

等待 1 秒

Alt + SysRq + E

等待30 秒

Alt + SysRq + I

等待 10 秒

Alt + SysRq + S

等待 5 秒

Alt + SysRq + U

等待 5 秒

Alt + SysRq + B.

我们通常只在意数据是否安全的同步到了磁盘,所以我们一般只用 S-B 组合,按下 Alt + SysRq + S 后等待 Emergency Sync complete 提示,同步完成确认后用 Alt + SysRq + B 立刻重启。

参考:使用 SysRq 键安全重启挂起的 Linux_wingking84的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/qq_41566366/article/details/124470735