Aug 24

[原]Linux Magic Key——SysRq(R-E-I-S-U-B) 晴

linuxing , 17:04 , 基础知识 » 故障处理 , 评论(1) , 引用(1) , 阅读(34004) , Via 本站原创 | |
    很久以前,曾在分析Linux死机故障一文中提到SysRq大法。而有时候,系统发生故障,核心仍在运行,键盘可用,但无法登陆或重启。这时,如果有打开SysRq功能的话,也可以利用SysRq的一些快捷键来实现安全关机的。

一、安全关机的重要性
为了提高性能,Linux 把大量的数据放在内存缓存中,并不是实时同步写入磁盘。只有在手动执行sync 或触发某些条件的情况下,核心才会把内存中的数据回写到物理磁盘。
当故障发生时,可能本地或远端已经无法登陆系统,无法执行重启或关闭的操作。但实际上,大部分情况下,这时的Linux 核心并不一定完全死掉。这时,如果强制关闭电源,内存中的数据将会丢失,甚至导致文件系统损坏。
为了在这样的情况下实现安全关机,我们可以借助SysRq 大法。

二、激活SysRq
默认情况下,安全起见,SysRq 功能是关闭的。(原因?在后面会提到)
引用
# cat /proc/sys/kernel/sysrq
0

要激活SysRq 功能,可执行下面的命令:

# echo "1" > /proc/sys/kernel/sysrq

或修改/etc/sysctl.conf,把下面的设定改为1:
引用
kernel.sysrq = 0

三、常见的SysRq功能键
万一发生故障,而SysRq是打开的,并且键盘是有响应的话(这说明Kernel 没有完全死掉)。就可以使用SysRq大法,在标准的QWERTY键盘中,使用“Alt+SysRq+功能键”的方式调用相关的功能。
可用功能键如下:
点击在新窗口中浏览此图片
也可参考kernel-doc 包中的说明,例如:

# vi /usr/share/doc/kernel-doc-2.6.18/Documentation/sysrq.txt

常用下面几个获得系统状态信息:
引用
T 获得进程系统堆栈信息
M 获得内存分配信息
W 获得当前寄存器信息

而用下面几个执行某些操作:
引用
R: Switch the keyboard from raw mode to XLATE mode. 将键盘控制从 X Server 那里抢回来(unRaw)
E: Send the SIGTERM signal to all processes except init.  给所有进程发送 SIGTERM 信号,让他们自己解决善后(tErminate)
I: Send the SIGKILL signal to all processes except init. 给所有进程发送 SIGKILL 信号,强制他们马上关闭(kIll)
S: Sync all mounted file systems (IMPORTANT). 将所有数据同步至磁盘(Sync)
U: Remount all mounted file systems in read-only mode. 将所有分区挂载为只读模式(Unmount)
B: Immediately reboot the system, without un-mounting partitions or syncing. 重启(reBoot)

一般的执行顺序就是R-E-I-S-U-B。
※ 注意,直接执行B命令将强制重启,这时内存中的数据是没有回写到磁盘中的。因此,应尽量用S 同步数据后,才进行reboot的操作。

四、附录
1、那里可以找到SysRq键
SysRq 键通常在键盘的右上角:
点击在新窗口中浏览此图片
如果是笔记本键盘,可能会与delete或用Fn才能使用。这时,上述的“ALT+SysRq+Key” 将要变成“ALT+Fn+SysRq+Key” 才能达到同样的效果。

2、SysRq 的安全问题
由于SysRq 直接作用于核心,打开该功能后,可能会引起一些安全问题。例如,下面的命令:

# echo b > /proc/sysrq-trigger

其效果将与敲入“ALT+SysRq+b” 的作用是相同的。

五、参考资料
Magic SysRq key
/usr/share/doc/kernel-doc-2.6.18/Documentation/sysrq.txt
Tags: ,
Linux Magic Key----SysRq(R-E-I-S-U-B)
[2011/03/05 15:43]
来源:Mylover.cns WEBLOG
内容: 有时候,系统发生故障,核心仍在运行,键盘可用,但无法登陆或重启。这时,如果有打开SysRq功能的话,也可以利用SysRq的一些快捷键来实现安全关机的。 一、安全关机的重要性 为了提高性能,Linux 把大量的数据放在内存缓存中,并不是实时同步写入磁盘。只有在手动执行sync 或触发某些条件的情况下,核心才会把内存中的数据回写到物理磁盘。 当故障发生时,可能本地或远端已经无法登陆系统,无法执行重启或关闭的操作。但实际上,大部分情况下,这时的Linux 核心并不一定完全死掉。这时,如果强制关闭电源,内存中的数据将会丢失,甚至导致文件系统损坏。 为了在这样的情况下实现安全关机,我们可以借助SysRq 大法。...
jimmy
2010/08/25 10:12
实时同步写入磁盘 会影响磁盘的性能 cool
linuxing 回复于 2010/08/26 12:21
实时写入当然会影响性能,但机器出现问题时,内存中的数据若没有回写到磁盘中,可能会引起很大的故障的。特别是对数据库、文件系统的影响。这时,SysRq 就很重要了。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]