linux死机了怎么办?

标签: linux 死机 | 发表时间:2010-10-20 23:00 | 作者:delectate 临峰
出处:http://bullog.org/

曾经啊,对着键盘上 Print Screen/SysRq 的键琢磨许久,也不知道所谓 SysRq 到底是做什么用的。自从用了 linux,才算知道是给内核传递信息,紧急情况下重启系统用的。

因为在 windows 的时候,从来没有用到过这个按键,所以我也就一直忽略掉了它的存在。直到有一天一个 flash 视频全屏后,x 崩溃,不要说进 tty 杀 gnome,就是按下 numberlock 都要反应好一会熄灭…… 幸好我有 SysRq 这个终极武器 :) ,顺利重启系统,避免了当前数据的丢失。

当您遇到死机或者没有响应的时候,甚至连 tty 都进不去,可以尝试用 SysRq 重启计算机。

警告:SysRq 不是万金油,不能解决任何疑难杂症。它只是您的最后武器,不到万不得已不可使用!因为一旦使用,系统将重启,当前工作的数据可能丢失!

使用 SysRq 重启计算机的方法:

Alt + SysRq + [R-E-I-S-U-B]
——台式机键盘或者全尺寸键盘

Fn + Alt + SysRq + [R-E-I-S-U-B]
——部分笔记本键盘

解释:括号内的英文字母需要依次顺序按下,而且每次按下字母后需要间隔 5-10s 再执行下一个动作。(如 alter +SysRq + R,间隔10s 后再按 alter+ SysRq +E,以此类推)切记不可快速按下 R-E-I-S-U-B ,否则后果和 扣电池拔电源线无异!

字母顺序的记忆方法很简单,busy — busier — (reverse) — reisub — R-E-I-S-U-B (想来也是 linus 那斯杰作吧,lol)

下面详细讲解一下各个序列:

unRaw – 把键盘设置为 ASCII 模式,使按键可以穿透 x server 捕捉传递给内核

tErminate向除 init 外进程发送 SIGTERM 信号,让其自行结束

kIll - 向除 init 以外所有进程发送 SIGKILL 信号,强制结束进程

Sync – 同步缓冲区数据到硬盘,避免数据丢失

Unmount – 将所有已经挂载的文件系统 重新挂载为只读

reBoot - 立即重启计算机

可以从顺序中看出,它不仅仅是杀掉进程这么简单,而且还有同步数据等操作,所以在每个操作结束前进行下一个操作是非常危险的。所以,R-E-I-S-U-B 这个序列的推荐使用方式是:R – 1 秒 – E – 30 秒 – I – 10 秒 – S – 5 秒 – U – 5 秒 – B,而不是一气呵成地按下这六个键,试想一次正常的 reboot 命令也不是在一瞬间完成的吧。


顺便翻一下其他按键的作用:

0-9 设定终端输出的内核 log 优先级
b 立即重启系统
c 内核live reboot,并输出错误信息
d 显示所有排它锁
e 向除 init 外进程发送 SIGTERM 信号,让其自行结束
f 人为触发 OOM Killer (out of memory)
g 当进入内核模式时,以 framebuttter 代替输出
h 输出帮助
i 向除 init 以外所有进程发送 SIGKILL 信号,强制结束进程
k 结束与当前控制台相关的全部进程
m 内存使用信息
n 重置所有进程的 nice(优先级)
o 关机
p 输出cpu 寄存器信息
q Display all active high-resolution timers and clock sources.
r 把键盘设置为 ASCII 模式,使按键可以穿透 x server 捕捉传递给内核
s 同步缓冲区数据到硬盘
t 输出进程列表
u 重新挂载所有文件系统为只读模式
v 输出 Voyager SMP 处理信息
w 输出 block(d状态)进程列表
组合使用效果更好~

我的尝试:

某次按照顺序执行 r-e-i-s-u-b 时候,忽然想到,既然 i 已经杀死了所有进程,那么僵死进程也必定被 kill 了,只要不是内核挂掉,应该都是可以恢复的。然后尝试进入tty1,成功。遂输入命令欲启动 gnome,成功。但是在 gnome 登陆界面,鼠标键盘均无法使用……

后来想明白了,应该是把 hal,udev 什么的都 kill 掉了,所以 x-server 无法接受输入设备信息,当然无法使用键鼠了……我的尝试也到此为止,希望有人能验证是不是因为 hal ,udev 被 kill而导致 gnome 输入无响应。

参考文献:

linuxtoy
wikipedia
kbd_mode
IBM developerWorks(R)

相关 [linux 死机] 推荐:

linux死机了怎么办?

- 临峰 - 牛博山寨 编辑推荐
曾经啊,对着键盘上 Print Screen/SysRq 的键琢磨许久,也不知道所谓 SysRq 到底是做什么用的. 自从用了 linux,才算知道是给内核传递信息,紧急情况下重启系统用的. 因为在 windows 的时候,从来没有用到过这个按键,所以我也就一直忽略掉了它的存在. 直到有一天一个 flash 视频全屏后,x 崩溃,不要说进 tty 杀 gnome,就是按下 numberlock 都要反应好一会熄灭…… 幸好我有 SysRq 这个终极武器 ,顺利重启系统,避免了当前数据的丢失.

如何查找 Linux 死机原因?

- 张家良 - LinuxTOY
Linux 内核虽然号称“不死族”,几乎不会崩溃或者死机,但是特殊情况下,还是有一定几率会宕机的. 因为 Linux 广泛用于生产环境,所以每一次宕机都会引起相当大的损失. 它 Uptime 达到上百天也许你习以为常,但是只要 Down 十几秒,就会立即急的满头大汗. 真的很难以想象证交所宕机会怎么样,也许全国股民会闹翻天.

Javascript 里跑Linux

- rockmaple - Shellex's Blog
牛逼到暴的大拿 Fabrice Bellard,用Javascript实现了一个x86 PC 模拟器,然后成功在这个模拟器里面跑Linux(请用Firefox 4 / Google Chrome 11打开,Chome 12有BUG). 关于这个东西… 伊说 “I did it for fun“,大大啊大大啊….

Linux Ksplice,MySQL and Oracle

- Syn - DBA Notes
Oracle 在 7 月份收购了 Ksplice. 使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性. 现在该产品已经合并到 Oracle Linux 中. 目前已经有超过 700 家客户,超过 10 万套系统使用了 Ksplice (不知道国内是否已经有用户了.

linux makefile编写

- hl - C++博客-首页原创精华区
在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则. target也就是一个目标文件,可以是Object File,也可以是执行文件. prerequisites就是,要生成那个target所需要的文件或是目标. command也就是make需要执行的命令. 这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在 command中.

Linux下的VDSO

- 圣斌 - Adam's
VDSO(Virtual Dynamically-linked Shared Object)是个很有意思的东西, 它将内核态的调用映射到用户态的地址空间中, 使得调用开销更小, 路径更好.. 开销更小比较容易理解, 那么路径更好指的是什么呢. 拿x86下的系统调用举例, 传统的int 0×80有点慢, Intel和AMD分别实现了sysenter, sysexit和syscall, sysret, 即所谓的快速系统调用指令, 使用它们更快, 但是也带来了兼容性的问题.

Linux wget命令

- - CSDN博客推荐文章
wget是linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径. 例如: # wget  http://www.linuxsense.org/xxxx/xxx.tar.gz. 简单说一下-c参数, 这个也非常常见, 可以断点续传, 如果不小心终止了, 可以继续使用命令接着下载.

linux 小技巧

- - DBA Blog
2:如何限制用户的最小密码长度. 修改/etc/login.defs里面的PASS_MIN_LEN的值. 比如限制用户最小密码长度是8:. 3:如何使新用户首次登陆后强制修改密码. 4:更改Linux启动时用图形界面还是字符界面. 将id:5:initdefault: 其中5表示默认图形界面. 改id:3: initdefault: 3表示字符界面.

Linux iostat命令

- - CSDN博客系统运维推荐文章
iostat用于输出CPU和磁盘I/O相关的统计信息. . iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [. iostat各个参数说明:. -c 仅显示CPU统计信息.与-d选项互斥. -d 仅显示磁盘统计信息.与-c选项互斥.

Linux的架构

- - 博客园_首页
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明. 我们以下图为基础,说明Linux的架构(architecture). (该图参考《 Advanced Programming in Unix Environment》). 最内层是我们的硬件,最外层是我们常用的各种应用,比如说使用firefox浏览器,打开evolution查看邮件,运行一个计算流体模型等等.