解决Ubuntu卡死

Solve Ubuntu Frozen

Posted by BY on October 15, 2020

前言

持续更新了

正文

问题来源

今天我跑的程序占用非常高的CPU和内存,当导致我的Ubuntu桌面直接卡死。

问题描述

电脑界面卡住,鼠标无法移动,键盘无法点击,等待半个小时没有自行修复。

解决办法:

对于相关问题中的描述,可以很轻松的解决,如果你是这种问题,那你可以松一口气了,解决办法很简单,默认你知道 Linux 的 top,ps,kill 等指令的用法,只要打开终端(CTRL+ALT+T)找到CPU占用比较大的,kill掉,问题解决。

如果你打不开终端(按住键盘无反应) 那就是桌面卡死了,只需要进入 TTY终端,既然图形化桌面卡了,那不使用图形化桌面即可。方法: CTRL+ALT+F1 (不一定,你试一试,F1-F7都试试)如果能进入TTY终端,登录,和上面的操作一样,使用 top,ps,kill 等指令,也可轻松解决

如果你上面的方法都失败了,那我推测你和我遇到的情况一样了。

我尝试收集更多的信息,我电脑之前打开了 22 端口,我想如果能通过远程连接的方式控制电脑,只要得到 root 权限,我也能随便 Kill 任何一个进程。我用另外一台笔记本连接到局域网,登录路由器,查看连接的设备,排除其它设备,找到我的Ubuntu电脑的IP,远程连接,失败了,根本连不上去,显示 timeout。(在一个局域网里面,怎么可能timeout,肯定是服务挂了)

我想起我电脑上装着apache,部署了一个网站,我试着访问了一下,失败了。

我将路由器重启了一下,之前Ubuntu设备消失了,没有自动连接上……

经过了这一系列努力,我有种不好的预感:我觉得是系统软件出错了(我应该去买彩票,这么小概率的事件都让我遇到了),导致现在电脑已经瘫痪了。

显然,这已经超过了我的能力范围,我请教了一位大牛,将上面的所有信息以及我自己的猜想告诉了他,他说我说的很有可能。那只能强制关机了么? 我几乎绝望的问道。他说,不用,系统的内核程序应该不会挂,否则电脑直接就黑屏了,他让我跳过中间的程序,直接向内核发送指令。

我靠,还有这种操作? 仿佛看到了一线希望。我确实不知道怎么做,所以直接按照他的步骤做的,详细记录如下:

查找你电脑键盘上的 SYSRQ 键(我的电脑是 PRTSC 和 SYSRQ 共用一个键),按照下面的步骤:

左手按住 CTRL 和 ALT键不松手(一直到结束都不松手)
右手按一下 SYSRQ,等待一秒以上
右手按一下 R 键,再次等待一秒
右手按一下 E 键,再次等待一秒
右手按一下 I 键,等待大概五秒
右手按一下 S 键,等待大概五秒
右手按一下 U 键,等待大概五秒
右手按一下 B 键

不出意外,你的电脑应该就安全的重启了。我的就是这么解决的。

后记

我查了一下资料,原来这是一种系统请求,会直接交给内核处理,上面的步骤解释如下:

CTRL+ALT+ SYSRQ : 初始化,告诉内核要发送系统请求
R: 表示 unraw,将键盘控制权从 x server手中夺过来,用于直接向内核传递信息
E: tErminate,给所有的进程发送 SIGTERM 信号,让他们自行解决善后问题。
I: kill,给所有的进程发送 SIGKILL 信号,强制所有进程关闭(相当于自杀指令)
S: sync,将所有的数据从内存,交换区等地方同步至硬盘,保存
U:unmount,将所有分区的挂载模式变为只读
B: reboot,重新启动

总结:

勤思考。

结语

不管怎么样好好加油。