前言
用过Linux系统的同学都知道,Linux的GUI是会有概率卡死的,而且还不能直接拔电源,开关机都需要通过正常的程序来执行。如果你够胆拔了电源,那么Linux就会让你死的很难看!!
事件起因
我的笔记本上就装了Ubuntu24,在我给项目安装依赖的时候直接给我卡死了,点哪儿都没有用,等了好久等不下去了。
解决办法
我搜索了很多教程,但是大部分都是需要打开命令行或者是在图形化界面上操作关机/重启的脑瘫教程,不是我都卡死了,那我怎么操作?回答我!Look in my eyes!虽然说可以打开另一太PC远程SSH命令行重启,但是我并没有那个条件,我就一台PC,而且我没打开SSH,也就是说,局域网内即使有另一台PC也没啥用。
有时候真别看啥某度某DN的教程或者文章,很多都没啥技术含量,全是shi。乖乖找个人搭建的Blog,个人搭建的Blog虽然也不一定有啥好内容,但是一定有用。
经过了这一系列努力,我有种不好的预感:系统软件出错导致现在电脑已经瘫痪了。
这明显超出了我的能力范围,我看了一位大牛的blog,讲的很清晰。系统的内核程序不会挂,否则电脑直接就黑屏了,跳过中间的程序,直接向内核发送指令。
我靠,还有这种操作? 我确实不知道怎么做,所以直接按照他的步骤做的,详细记录如下:
查找你电脑键盘上的 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,重新启动