linux 死机了怎么办

133 views
Skip to first unread message

Haibin

unread,
Aug 22, 2009, 11:54:43 PM8/22/09
to 每日阅读
头一回注意到 SysRq 这个键……

 
 

Sent to you by Haibin via Google Reader:

 
 

via LinuxGem on 8/20/09

Linux 会死机么?我可以很肯定地说,会!要让 Linux 死机很容易,但难的是在死机以后如何安全的让他摆脱死机状态,本文讲述如何从 linux 的死机状态中挣脱出来。

Linux 死机有很多种情况,最常见的是系统负载过高导致的。如上次介绍的 fork 炸弹就是这个原理,此外还可以运行内存耗用极大的程序(如虚拟机),也会迅速提升系统负载。由于系统负载过高导致的卡死,一定是解决的越快越好!此时必须记住的是,不能再试图依赖任何图形界面的东西,如 Gnome 的系统监视器(这是我从 Windows 遗留下来的愚昧习惯……),这只会继续加重这种卡死的局面。那怎么办?

不要怕,Linux 最初就是不需要图形界面的,因为有一个很强大的文字界面。按 Ctrl-Alt-F1(F1-F6 一般来说都可以),然后等一会儿,就会切换到 tty,也就是所谓的文字界面。这个时候需要用用户名密码登入。注意,可能键盘输入的速度比较慢,不过应该还是可以忍受的。下面在提示符后面输入 top 回车,这时会看到一张动态的表,上面列出了耗用资源最多的进程。观察它刷新一两次,按q退出,然后输入 kill ,其中的 PID 你可以在 top 里面看到。这个时候应该会快了不少,如果你发现没有成功结束掉,就再输入 kill -KILL ,这次基本上就没问题了。

除了上面这种情况外,一些底层软件的 bug 也可能导致一些奇怪的死机问题。我某位同学近日就因为莫名其妙的死机强制重启把 ext4 的分区给伤了。(最后是 sysreccd 修复了,貌似是分区表部分损坏)据其说,死机是键鼠均无反应。一般来说,系统负载高导致的死机,在可怕键盘也会有反应,有人说如果死机到键盘无响应“负载 都无限大了”,亦有人说这可能是 X Server 与驱动配合有问题导致的。不过我们考虑一下遇到这种情况怎么办?

OK,这是今天才学到的方法,叫做 reisub,这个方法可以在各种情况下安全地重启计算机。大家在键盘上找,可以找到一个叫做“Sys Rq”的键,在台机的键盘上通常与 Prt Sc 共键,在笔记本可能在其他位置,如 Delete。以台机为例,要使用这种方法需要按住 Alt-Print(Sys Rq),然后依次按下 reisub 这几个键,按完 b 系统就会重启。

下面解释一下这个方法:其实 Sys Rq 是一种叫做系统请求的东西,按住 Alt-Print 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux 内核来处理,它可以进行许多低级操作。这个时候 reisub 中的每一个字母都是一个独立操作,他们分别表示:

unRaw      将键盘控制从 X Server 那里抢回来
 tErminate 给所有进程发送 SIGTERM 信号,让他们自己解决善后
 kIll      给所有进程发送 SIGKILL 信号,强制他们马上关闭
  Sync     将所有数据同步至磁盘
  Unmount  将所有分区挂载为只读模式
reBoot     重启

这6个字母的顺序是不可以记错的。那怎么记呢?这里提供一个个人认为比较好的方法:单词 busier(busy 的比较级,更忙)倒过来就是了。

基本上就这样了,Linux 的死机本来就不多见,现在见了也可以安全解决,多好~

 

本文转载自:http://blog.upsuper.org.cn/what-to-do-if-linux-crash/


 
 

Things you can do from here:

 
 

Haibin Lee

unread,
Aug 23, 2009, 12:09:27 AM8/23/09
to 每日阅读
实际上这里说的是 X 挂了的情况。原文后面的评论还提到

“Sys Rq键并不是系统安装就能使用的,大部分发行版本默认都是disable的,你需要通过
echo 1 > /proc/sys/kernel/sysrq
来开启。”

我是 Arch Linux,之前的确经常发生过 X 挂掉。在自己的 Benq 和公司的 Toshiba 本本上都发生过。前段时间研究出是
compiz-fusion 的 Animations Add-On 功能的问题……不能享受华丽的窗口动作了。

2009/8/23 Haibin <lee.b...@gmail.com>:

freebsd solaris

unread,
Aug 23, 2009, 12:50:34 AM8/23/09
to nkeric...@googlegroups.com
恩。
记住reisub。我经常用。

在 09-8-23,Haibin Lee<lee.b...@gmail.com> 写道:

高嵩

unread,
Aug 23, 2009, 2:10:44 AM8/23/09
to nkeric...@googlegroups.com
我只是好奇,怎样“按住 Alt-Print(Sys Rq),然后依次按下 reisub 这几个键”


2009/8/23 freebsd solaris <evolutio...@gmail.com>



--
Best regards
Gao Song.

ideas

unread,
Aug 23, 2009, 3:54:35 AM8/23/09
to nkeric...@googlegroups.com
不错,先记下了

2009/8/23 高嵩 <not...@gmail.com>



--
>>> ideas here <<<

Haibin Lee

unread,
Aug 23, 2009, 6:39:02 AM8/23/09
to nkeric...@googlegroups.com
我用的是本本,两只手可以做到。但还没做实验,等晚上关机时再试,哈哈。

2009/8/23 高嵩 <not...@gmail.com>:

Joe (Zhou Xiangtao)

unread,
Aug 23, 2009, 9:34:24 AM8/23/09
to nkeric...@googlegroups.com
键盘失去相应的时候就不行了。。。 遇到过键盘失去相应的时候

2009/8/23 Haibin <lee.b...@gmail.com>



--
Zhou Xiangtao
Email: tao...@gmail.com
Tel    : 8610-8248-6402/6407
site   : http://kuaimantech.com
Beijing Kuaiman times Technology Ltd.

saiddy

unread,
Aug 23, 2009, 6:44:01 AM8/23/09
to nkeric...@googlegroups.com
右手按右alt和sysrq键盘。左手点击reisub呗

On 08/23/09 at 02:10下午, 高嵩 wrote:
> 我只是好奇,怎样*“按住* Alt-Print(Sys Rq),然后依次按下 reisub 这几个键”

--

Good good emerge,
Day day update...

freebsd solaris

unread,
Aug 23, 2009, 11:29:43 AM8/23/09
to nkeric...@googlegroups.com
你试试看就知道了。很好按的。
有时候系统崩溃了这时候用这个挺好使的。
另外,一般情况下,我会先按电源键,让系统自动关机。实在不行就再用sysrq。

在 09-8-23,高嵩<not...@gmail.com> 写道:
> 我只是好奇,怎样*“按住* Alt-Print(Sys Rq),然后依次按下 reisub 这几个键”

高嵩

unread,
Aug 24, 2009, 12:45:38 AM8/24/09
to nkeric...@googlegroups.com
dell 8115, sysrq在数字键/的上方
我试了一下,只有一种方法能按到
左手按右alt,右手按sysrq,然后左手其他指头reisub:)

2009/8/23 freebsd solaris <evolutio...@gmail.com>

Richard Zhou

unread,
Aug 24, 2009, 2:14:09 AM8/24/09
to nkeric...@googlegroups.com
我是笔记本,还要按个Fn, 难度相当大,但是按了也没效果

2009/8/24 高嵩 <not...@gmail.com>

高嵩

unread,
Aug 24, 2009, 8:25:40 AM8/24/09
to nkeric...@googlegroups.com
回到家试了一下。
按照这个方法按完就死机。。。
x失去响应,切换到控制台无屏幕显示,远程登录不上,但是键盘还有响应

只好瞎着切换到控制台,敲密码重启。

试了两次都这样,不过既然有死机,就证明这个法子还能用,可能是只响应了其中的部分请求,改天研究研究去

在 09-8-24,Richard Zhou<zrx...@gmail.com> 写道:

--
从我的移动设备发送

Best regards
Gao Song.

freebsd solaris

unread,
Aug 24, 2009, 9:58:59 AM8/24/09
to nkeric...@googlegroups.com
如果你试过的话就会发现不用按Fn。
至少我的x61不用。


在 09-8-24,Richard Zhou<zrx...@gmail.com> 写道:

freebsd solaris

unread,
Aug 24, 2009, 10:00:29 AM8/24/09
to nkeric...@googlegroups.com
只要一按r就到raw模式,X就没有键盘了。
敲完每个键后要稍微等一下再敲下个键。等你敲完b等会就重启了。

在 09-8-24,高嵩<not...@gmail.com> 写道:

Yihua Xu

unread,
Aug 24, 2009, 9:00:36 PM8/24/09
to 每日阅读
SysRq 为传说中的 Linux 的魔力键 (magic key)

Wikipedia 上到详细介绍: http://en.wikipedia.org/wiki/Magic_SysRq_key

个人在 gentoo 上的一些了解:

1. 内核编译时需自己打开, gentoo 默认关闭的
2. 服务器上建议禁用该内核选项, 因为能碰到实体机的人就能通过它攻击你的服务器, 例如重启 (当然, 拔电源也行...)
3. 在 X 死掉的情况下, 不一定都能救命, 试过多次 X 锁死键盘后, 咋摁都没用, 只能长摁电源关机聆听硬盘咯噔一响... 回来后日志也
没用, 尝试过分析, 无疾而终

好像是某种 kernel panic 的场景会让 magic key 也没治?

cast orion

unread,
Aug 24, 2009, 9:18:43 PM8/24/09
to nkeric...@googlegroups.com
原来不要Fn =. =

2009/8/24 freebsd solaris <evolutio...@gmail.com>

cast orion

unread,
Aug 24, 2009, 9:18:57 PM8/24/09
to nkeric...@googlegroups.com
原来键盘也会死= .=

2009/8/25 Yihua Xu <nke...@gmail.com>

.大灰狼

unread,
Aug 25, 2009, 5:46:11 AM8/25/09
to nkeric...@googlegroups.com
不错, 说到X挂了 , 直接Ctrl+Alt+Backspace 重启x 一般就搞定
linux 系统就是各种中断优先处理,所以负载满了也能很快的响应
键盘,以达到控制计算机的目的。

2009/8/23 Haibin <lee.b...@gmail.com>:

--
=============================
没有最黑,只有更黑

cast orion

unread,
Aug 25, 2009, 10:23:03 PM8/25/09
to nkeric...@googlegroups.com
Unix 是 如此的优雅

2009/8/25 .大灰狼 <su....@gmail.com>

Cheng Zhang

unread,
Aug 26, 2009, 12:06:32 AM8/26/09
to nkeric...@googlegroups.com
这个八月,正好是 UNIX 40 周年的庆祝。
<http://www.osnews.com/story/22031/Unix_Celebrates_40_Years>


2009/8/26 cast orion <cast...@gmail.com>
>
> Unix 是 如此的优雅

Yihua Xu

unread,
Aug 26, 2009, 5:56:18 AM8/26/09
to 每日阅读
On Aug 25, 5:46 pm, .大灰狼 <su.r...@gmail.com> wrote:
> 不错, 说到X挂了 , 直接Ctrl+Alt+Backspace 重启x 一般就搞定
> linux 系统就是各种中断优先处理,所以负载满了也能很快的响应
> 键盘,以达到控制计算机的目的。

X 如果导致诸如 kernel panic 的时候, 这招可能也不顶用的;
而 magic key 的目标是为了 ctrl+alt+backspace 也不顶用的时候来顶用...
结果还有 magic key 搞不定的情况...

印象中 X 是毛病最多的一个, 我觉得是因为它以 root 权限在运行.
而按 *nix 的习惯, 一般各种服务都应该以某个 "权限刚刚够的账号" 来跑, 这样即便这个服务挂了/被黑了, 也对系统的影响能被降到最
低.

记得之前几次死机就是因为 X (可能还有 nvidia 驱动模块);
有阵子一个 bug 能让你从 X 切到 console (ctrl+alt+F[num]? 忘了...), 再切回来就死了

现在有个 non-root X 的努力方向[1][2], 估计不久之后 X 可以以一个低权限的帐号来跑了, 安全性稳定性应该有所提升...


(有段时间没用 Linux 桌面了, 说错的地方请不吝指正:)

____

[1]: http://lists.x.org/archives/xorg-devel/2009-July/001293.html
[2]: http://airlied.livejournal.com/59521.html

Yihua Xu

unread,
Aug 26, 2009, 5:59:42 AM8/26/09
to 每日阅读
分享另外一个私人 "救 X" 的方法 - 用 iPhone!

1. 确保 Linux 跑着 ssh
2. 死了就 iPhone 上 terminal ssh 过去

当然, 另外一台带 ssh client 的机器也可...
(系统崩溃到 ssh 都连不上的时候也没辙...)

Reply all
Reply to author
Forward
0 new messages