Aug
24
[原]Linux Magic Key——SysRq(R-E-I-S-U-B)
很久以前,曾在分析Linux死机故障一文中提到SysRq大法。而有时候,系统发生故障,核心仍在运行,键盘可用,但无法登陆或重启。这时,如果有打开SysRq功能的话,也可以利用SysRq的一些快捷键来实现安全关机的。
一、安全关机的重要性
为了提高性能,Linux 把大量的数据放在内存缓存中,并不是实时同步写入磁盘。只有在手动执行sync 或触发某些条件的情况下,核心才会把内存中的数据回写到物理磁盘。
当故障发生时,可能本地或远端已经无法登陆系统,无法执行重启或关闭的操作。但实际上,大部分情况下,这时的Linux 核心并不一定完全死掉。这时,如果强制关闭电源,内存中的数据将会丢失,甚至导致文件系统损坏。
为了在这样的情况下实现安全关机,我们可以借助SysRq 大法。
二、激活SysRq
默认情况下,安全起见,SysRq 功能是关闭的。(原因?在后面会提到)
要激活SysRq 功能,可执行下面的命令:
或修改/etc/sysctl.conf,把下面的设定改为1:
三、常见的SysRq功能键
万一发生故障,而SysRq是打开的,并且键盘是有响应的话(这说明Kernel 没有完全死掉)。就可以使用SysRq大法,在标准的QWERTY键盘中,使用“Alt+SysRq+功能键”的方式调用相关的功能。
可用功能键如下:
也可参考kernel-doc 包中的说明,例如:
常用下面几个获得系统状态信息:
而用下面几个执行某些操作:
一般的执行顺序就是R-E-I-S-U-B。
※ 注意,直接执行B命令将强制重启,这时内存中的数据是没有回写到磁盘中的。因此,应尽量用S 同步数据后,才进行reboot的操作。
四、附录
1、那里可以找到SysRq键
SysRq 键通常在键盘的右上角:
如果是笔记本键盘,可能会与delete或用Fn才能使用。这时,上述的“ALT+SysRq+Key” 将要变成“ALT+Fn+SysRq+Key” 才能达到同样的效果。
2、SysRq 的安全问题
由于SysRq 直接作用于核心,打开该功能后,可能会引起一些安全问题。例如,下面的命令:
其效果将与敲入“ALT+SysRq+b” 的作用是相同的。
五、参考资料
Magic SysRq key
/usr/share/doc/kernel-doc-2.6.18/Documentation/sysrq.txt
一、安全关机的重要性
为了提高性能,Linux 把大量的数据放在内存缓存中,并不是实时同步写入磁盘。只有在手动执行sync 或触发某些条件的情况下,核心才会把内存中的数据回写到物理磁盘。
当故障发生时,可能本地或远端已经无法登陆系统,无法执行重启或关闭的操作。但实际上,大部分情况下,这时的Linux 核心并不一定完全死掉。这时,如果强制关闭电源,内存中的数据将会丢失,甚至导致文件系统损坏。
为了在这样的情况下实现安全关机,我们可以借助SysRq 大法。
二、激活SysRq
默认情况下,安全起见,SysRq 功能是关闭的。(原因?在后面会提到)
引用
# cat /proc/sys/kernel/sysrq
0
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 获得当前寄存器信息
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)
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
内容: 有时候,系统发生故障,核心仍在运行,键盘可用,但无法登陆或重启。这时,如果有打开SysRq功能的话,也可以利用SysRq的一些快捷键来实现安全关机的。 一、安全关机的重要性 为了提高性能,Linux 把大量的数据放在内存缓存中,并不是实时同步写入磁盘。只有在手动执行sync 或触发某些条件的情况下,核心才会把内存中的数据回写到物理磁盘。 当故障发生时,可能本地或远端已经无法登陆系统,无法执行重启或关闭的操作。但实际上,大部分情况下,这时的Linux 核心并不一定完全死掉。这时,如果强制关闭电源,内存中的数据将会丢失,甚至导致文件系统损坏。 为了在这样的情况下实现安全关机,我们可以借助SysRq 大法。...