不建议长按 Power 按键强制关机,有可能损坏硬件或者丢失数据,甚至导致磁盘坏道!
Linux 内核虽然号称“不死族”,几乎不会崩溃或者死机,但是特殊情况下,还是有一定几率会宕机的。因为 Linux 广泛用于生产环境,所以一次宕机都会引起相当大的损失。它 Uptime 达到上百天也许你习以为常,但是只要 Down 十几秒,就会立即急的满头大汗。真的很难以想象证交所宕机会怎么样,也许全国股民会闹翻天。所以我们需要一些小技巧来查找死机的原因,从而避免死机或者内核崩溃。(话说 windows 天天蓝屏也没感觉呀 :-o 难道已经麻木了 :oops: )
请注意:以下方法可能不适用于 Server,因为桌面环境和 Server 还是有很大区别的。
X Crash
通常套路是 Ctrl + Alt +F7 (F8) 切换到某个 tty,然后用 root 登陆,执行 top 查看吃资源最多的程序,然后使用 pkill/kill/killall 等命令杀死该程序。或使用组合键 Ctrl + Alt + Backspace重启 X (黑日白月注:这个快捷键组合在最新的 Ubuntu 和 Fedora 中关闭)。
如果偶遇切换 tty 失败或者没响应,可以试着使用 SSH 登陆此电脑,然后再杀死程序。也许只是 X 不响应,而内核和 SSH daemon 仍然工作,故此可以实施此法。arch 配置 SSH daemon
万一 X 不给力,各种方法试了无效,又没有办法通过 SSH 登陆到此 pc,那怎么办呢?别着急,我们还有万能的 “reisub” 大法。不过在启用前先要激活内核 sysrq 功能 (via) 。系统启动时执行:echo “1” > /proc/sys/Kernel/sysrq 或者修改 /etc/sysctl.conf 文件,设置 Kernel.sysrq = 1。系统异常时依次按下 Alt+sysrq+{reisub} ,然后系统会自动重启。(有关 sysrq 请看:Linux 死机了怎么办?)
X 崩溃而内核完好常见的症状有:程序无响应,花屏,鼠标移动指针无动作,键盘输入没有识别等。但后台的音乐可以正常播放,或者键盘 Caps Lock/Num Lock/Scroll Lock 按键按后对应 LED 可以正常亮灭。遇到此种情况可以使用上述方法重启 X 或者电脑即可恢复正常。
Application Crash
一般遇到这种问题,建议检查配置文件是否正确,对配置文件的错误修改可能导致程序的运行失败。如果您确信配置文件没有错误但是程序仍然异常,可以尝试把配置文件删除(注意备份!),然后再次打开软件尝试。通常程序的配置文件在:
● ~/.[APPNAME]
● ~/.config/[APPNAME]
● /etc/[APPNAME].conf
或者有可能是库的错误,您可以在终端输入程序名或者程序路径运行程序,根据终端的提示信息除错。由于导致程序崩溃的可能性多种多样,在此不能一一列举,所以建议您根据出错信息去 google 搜索并找到解决方案。
Kernel Panic
X 的问题还好办,可是如果 RPWT 碰到 Kernel Panic,那可真是上天无路入地无门,撞墙的心都有 :evil: 。
一般引起 Kernel Panic 的原因很多,但是都比较罕见。例如硬件问题 (irq confilct, bad block, high temperature),软件问题(错误的 mod,内核的 Bug),或者文件系统不支持(没有内建 ext4 支持却挂载 ext4 的 root 分区),硬件的变动(如添加/更换内存,不支持架构的cpu),错误的驱动。Kernel Panic 的表现形式也是多种多样:启动失败,不正常的长时间 io 操作,键盘灯的不正常频闪,wireless 等指示灯错误闪烁,无响应(请区别 xorg crash 情况),彻底锁死,黑屏,reisub 大法不灵 等等。
Linux死机了怎么办
如果是在图形界面下死机的话,不要再依赖任何图形界面的工具,那样只会适得其反,可以先试试文字界面,按ctrl+alt+f2(F1-F6一般都可以),会切换到另外一个虚拟终端,需要一个账号来登入,这时键盘响应可能非常慢,但是是可以响应的,进入后打top命令看一下进程,等这个表刷那么一两次,就可以确定占用资源比较大的进程了,把它kill掉,这样可以解决相当一部分问题。
但是有的时候是比较底层的软件出现问题,那这个方法就不适用了,但是这就引出了这篇文章要说的强强的方法。reisub方法,说具体一点,是一种系统请求,直接交给内核处理。键盘上一般都有一个键,SysRq,和PrintScreen在一个键位上,这就是系统请求的键。这个方法可以在死机的情况下安全的重启计算机,数据不会丢失。
具体操作是,按住Alt+SysRq,再依次按下reisub几个键,按完b系统就会重启。
下面解释一下这个方法:其实 Sys Rq 是一种叫做系统请求的东西,按住 Alt-Print 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux 内核来处理,它可以进行许多低级操作。这个时候 reisub 中的每一个字母都是一个独立操作,他们分别表示:
nRaw 将键盘控制从 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 默认已经开启了这个功能。
接下来就是操作:马上你就会发现,同时按下<Alt>+<SysRq>压根儿行不通!只会蹦出来一个屏幕截图窗口。所以,真正的做法应该是:
(1)伸出你的左手,同时按住<Ctrl>+<Alt>键,别松开
(2)右手先按一下<SysRq>,左手别松开,等1秒
(3)右手按一下 R,左手别松开,等1秒
(4)右手按一下 E,左手别松开。这时包括桌面在内,所有程序都会终止,你会看到一个黑乎乎的屏幕,稍微等一段时间
(5)右手依次按下 I,S,U,B,左手别松开。每按一次都等那么几秒种,你会发现每按一次,屏幕上信息都会有所变化。最后按下B时,屏幕显示 reset,这时你的左手可以松开了,等几秒钟,计算机就会安全重启。
这是我亲自尝试的过程。
--------------------------------------------------------------------------------------------------------------------------------------------------------
在 Ubuntu 7.10(够古董)的 wiki 上曾经有说明,可惜居然无人关注。
http://wiki.ubuntu.org.cn/Ubuntu:Gutsy/zh
Ubuntu"死机“时怎么办
有无数种原因可能导致系统崩溃,可能是程序的bug,可能是内存管理的问题,或者其它任何原因。当你的计算机停止响应时,不要总想着去按“电源”键关机!在你强行关掉电源前试试以下几种简单的方法:计算机停止响应了吗?先试着按<Ctrl><Alt>和<F1>键来进入虚拟终端。这样计算机仍在你掌控中,你可以停掉导致系统无响应的程序。
如果你不能进入虚拟终端,再试试重启图形界面吧,方法是<Ctrl><Alt><backspace>。所有在这个图形界面中打开的应用程序都将被关闭,登录界面出现,你可以重获系统控制权。
如果前面两个都失败了,我们重启吧。最安全的做法就是按<Ctrl><Alt><Delete>。电脑将运行关机脚本,安全重启。
如果由于关机脚本的问题导致方法3失败,那么就重新按下3中所说那三个键。当然这样是不安全的,因为系统可能不会unmount掉文件系统。
必杀技:如果试了以上方法都无效,有一条小秘决,别人我不告诉他。其实系统核心有一条小小的用户空间通信管道保持畅通,在你的核心崩溃时(这个方法我还没试过,谁去试试?)你可以通过以下方法安全重启。这个方法是安全的,但切记只有所有尝试失败後再这样做!按下<Ctrl><Alt>和<PrtScrn/SysRq>键,别放开,然後输入以下字母(确保按顺序)REISUB。系统会unmount掉mount的所有本地文件系统,安全关机。什么?这个字母序列很难忘?把它倒过来读读“busier"。