I am LAZY bones? AN ancient AND boring SITE

linux的Magic Key

自从我换成了开源的A卡驱动以后,我的电脑就时不时地崩溃。现象是:突然之间,整个画面就冻结了,鼠标也不能动了,几乎所有的按键也都失效了,ctrl+alt+F1 和 ctrl+alt+backspace 都无效。这种情况一般发生在有不规则形状的窗口出现的时候,比如gnome-osd的透明文字,但也不是很一定的,发生的概率也不高,一般几天才会有一次。我想,要彻底解决的话,也只能等待驱动的改进了。
不过,每次崩溃都强行按电源的话,还是有点心痛的。幸好办法还是有的,因为驱动程序其实也只是一个程序而已,这时候即使驱动死掉了,鼠标键盘不能动,linux内核还是在正常运行的(按理如果我开了sshd的话,其他机器还是能ssh上来的)。而且,内核还是能处理一些键盘事件的,比如本文要说的:Magic System Request Key
以下按键,一般情况下不建议使用,除非是ctrl+alt+F1都失效了,才用。
使用Magic SysRq key的前提是CONFIG_MAGIC_SYSRQ这个内核选项被打开,并且没有在/proc/sys/kernel/sysrq里禁用掉,也就是 cat 这个文件的时候,出来的是 1 (或其他某些非0值)。其实这两个条件,在一般的linux发行版里都是满足的。下面就来介绍一下几个键的具体作用,其中SysRq指的是右上角的“Print Screen”键。

ALT-SysRq-b 立即重启系统,不卸载分区和同步文件。
ALT-SysRq-c 调用kexec内核函数来重启,可以生成个crashdump。
ALT-SysRq-d 显示所有的“锁”,如果开了X的话,估计基本看不到。
ALT-SysRq-e 给除了init以外的所有进程发送SIGTERM信号,可以试图正常结束所有进程。
ALT-SysRq-f 调用oom_kill函数来干掉占用了很大内存的进程。
ALT-SysRq-g 内核调试相关的(好像新内核已经没了?)。
ALT-SysRq-h 显示其他key的帮助,同样,如果开了X的话,估计基本看不到。
ALT-SysRq-i 给除了init以外的所有进程发送SIGKILL信号。
ALT-SysRq-k 结束当前虚拟终端的所有进程。
ALT-SysRq-l 显示所有活动CPU的栈跟踪信息。
ALT-SysRq-m 显示内存状态。
ALT-SysRq-n
ALT-SysRq-o 可能的话,关机。
ALT-SysRq-p 显示当前的寄存器状态和标志位。
ALT-SysRq-r 关闭键盘的raw模式。
ALT-SysRq-s 同步内存里的数据到硬盘。
ALT-SysRq-t 显示当前的任务信息。
ALT-SysRq-u 以只读模式重新挂载所有分区。
ALT-SysRq-v
ALT-SysRq-w 显示不可中断的任务
ALT-SysRq-x
ALT-SysRq-z
ALT-SysRq-数字键 调整日志输出级别
另外,除了物理的按键以外,其实还可以把某个键的值用root权限写到 /proc/sysrq-trigger 文件里(这个文件是个只写不读的怪文件,哈哈),比如

echo t > /proc/sysrq-trigger

,来触发Magic SysRq key。

以上内容可以在内核源码的 Documentation/sysrq.txt 里找到英文原文,但是即便是这个官方文档,也似乎不是每个按键都有效的,可能是某些只有在特定的硬件条件下才有效,又或者文档没更新?
在万一遇到程序崩溃的时候,你可能需要按的键是: ALT-SysRq-r e i s u b 来安全地重启机器~

最后修改时间: 2009年08月11日 10:01

本文章发表于: 2009年08月10日 22:13 | 所属分类:备忘. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

6 个评论 关于: “linux的Magic Key”

  1. cbkid 在 2009年08月11日 07:12 说:回复

    我的也是a卡,同样出现频繁死机(比你的频繁多了),几天前试用了一下ubuntu 9.10(kernel-3.0.1?),没有死过机。

    • bones7456 在 2009年08月11日 08:40 说:回复

      我也有个ubuntu,里面的驱动都被我卸载掉了,但是compiz照开,性能也不错。哈哈。。。

  2. 另外那根骨头 在 2009年08月11日 14:28 说:回复

    前面我的Ubuntu 904的X老是挂掉,除了鼠标,所有按键失效…
    下次遇到问题试试这个看….

  3. transtone 在 2009年08月12日 21:46 说:回复

    我这里出问题一般是hibernate之后,只要hibernate一次,不出十分钟(时间不定)肯定“死机”。而且用闭源驱动的时候也这样。都不知道是不是显卡的原因。但console下hibernate没这个问题。

    • bones7456 在 2009年08月13日 08:23 说:回复

      呃。。反正A卡问题不少。。。

  4. firefoxmmx 在 2009年08月17日 11:30 说:回复

    这个不仅是A卡的问题了,我的N卡,在用vdpau看电影的时候,也会这样。。。

    这个问题还得显卡的驱动来解决。

bones7456 发表评论




取消