超有效的Linux死机解决方法

原文链接:https://blog.csdn.net/openswc/article/details/9105071

    不建议长按 Power 按键强制关机,有可能损坏硬件或者丢失数据,甚至导致磁盘坏道!

    通常套路是 Ctrl +Alt +F7 (F8) 切换到某个 tty,然后用 root 登陆,执行 top 查看吃资源最多的程序,然后使用 pkill/kill/killall 等命令杀死该程序。或使用组合键 Ctrl +Alt + Backspace重启 X (黑日白月注:这个快捷键组合在最新的 Ubuntu 和 Fedora 中关闭)。

    如果偶遇切换 tty 失败或者没响应,可以试着使用 SSH 登陆此电脑,然后再杀死程序。也许只是 X 不响应,而内核和 SSH daemon 仍然工作,故此可以实施此法。

如果是在图形界面下死机的话,不要再依赖任何图形界面的工具,那样只会适得其反,可以先试试文字界面,按ctrl+alt+f2(F1-F6一般都可以),会切换到另外一个虚拟终端,需要一个账号来登入,这时键盘响应可能非常慢,但是是可以响应的,进入后打top命令看一下进程,等这个表刷那么一两次,就可以确定占用资源比较大的进程了,把它kill掉,这样可以解决相当一部分问题。但是有的时候是比较底层的软件出现问题,那这个方法就不适用了,但是这就引出了这篇文章要说的强强的方法。reisub方法,说具体一点,是一种系统请求,直接交给内核处理。键盘上一般都有一个键,SysRq,和PrintScreen在一个键位上,这就是系统请求的键。这个方法可以在死机的情况下安全的重启计算机,数据不会丢失。
    具体操作是,按住Alt+SysRq,再依次按下reisub几个键,按完b系统就会重启。下面解释一下这个方法:其实 Sys Rq 是一种叫做系统请求的东西,按住 Alt-Print 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux 内核来处理,它可以进行许多低级操作。这个时候 reisub 中的每一个字母都是一个独立操作,他们分别表示:
    unRaw 将键盘控制从 X Server 那里抢回来
    tErminate 给所有进程发送 SIGTERM 信号,让他们自己解决善后
    kIll 给所有进程发送 SIGKILL 信号,强制他们马上关闭
    Sync 将所有数据同步至磁盘
    Unmount 将所有分区挂载为只读模式
    reBoot 重启

    这里有个问题要注意一下,最好不要快速连续地按下这几个键,要有间隔,大概是估计每个间隔10秒左右,因为每一步操作都需要时间,而且s键之后因为同步数据比较慢,可以停20秒。魔法键reisub究竟该怎么用?

    如果某一天你的 Linux 死机了,键盘不听使唤了,Ctrl+Alt+F1已经没有任何反应,该怎么办呢?想必你一定听说过“魔法键”:Alt+SysRq+r,e,i,s,u,b(确实很好背,就是单词 busier 的倒写)。好的,平时电脑那么正常,你自然也不会去按这些按钮。等到真的出事的时候,你把记在小纸条上的这些 tips 拿出来,然后在键盘上按,结果发现啥反应也没有,于是只能欲哭无泪了……
      问题在于:究竟该怎么按这些按钮才会有效?
      首先,你的系统要支持这个功能,查看和开启的方法大家应该很熟悉了,网上也有很多说明,而且最幸运的是:Ubuntu 默认已经开启了这个功能。
      接下来就是操作:马上你就会发现,同时按下+压根儿行不通!只会蹦出来一个屏幕截图窗口。所以,真正的做法应该是:
(1)伸出你的左手,同时按住+键,别松开
(2)右手先按一下,左手别松开,等1秒
(3)右手按一下 R,左手别松开,等1秒
(4)右手按一下 E,左手别松开。这时包括桌面在内,所有程序都会终止,你会看到一个黑乎乎的屏幕,稍微等一段时间
(5)右手依次按下 I,S,U,B,左手别松开。每按一次都等那么几秒种,你会发现每按一次,屏幕上信息都会有所变化。最后按下B时,屏幕显示 reset,这时你的左手可以松开了,等几秒钟,计算机就会安全重启。

你可能感兴趣的:(Linux使用)