很久以前,曾在分析Linux死机故障一文中提到SysRq大法。而有时候,系统发生故障,核心仍在运行,键盘可用,但无法登陆或重启。这时,如果有打开SysRq功能的话,也可以利用SysRq的一些快捷键来实现安全关机的。
一、安全关机的重要性
为了提高性能,Linux 把大量的数据放在内存缓存中,并不是实时同步写入磁盘。只有在手动执行sync 或触发某些条件的情况下,核心才会把内存中的数据回写到物理磁盘。
当故障发生时,可能本地或远端已经无法登陆系统,无法执行重启或关闭的操作。但实际上,大部分情况下,这时的Linux 核心并不一定完全死掉。这时,如果强制关闭电源,内存中的数据将会丢失,甚至导致文件系统损坏。
为了在这样的情况下实现安全关机,我们可以借助SysRq 大法。
二、激活SysRq
默认情况下,安全起见,SysRq 功能是关闭的。(原因?在后面会提到)
0
要激活SysRq 功能,可执行下面的命令:
或修改/etc/sysctl.conf,把下面的设定改为1:
三、常见的SysRq功能键
万一发生故障,而SysRq是打开的,并且键盘是有响应的话(这说明Kernel 没有完全死掉)。就可以使用SysRq大法,在标准的QWERTY键盘中,使用“Alt+SysRq+功能键”的方式调用相关的功能。
可用功能键如下:
# vi /usr/share/doc/kernel-doc-2.6.18/Documentation/sysrq.txt