Monthly Archives: August 2009

Linux’s Magic key (转)

转自 http://li2z.cn/2009/08/10/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的栈跟踪信息。 … Continue reading

Posted in GNU/Linux | Tagged | 2 Comments