It is a 'magical' key combo you can hit which the kernel will respond to
regardless of whatever else it is doing, unless it is completely locked up.
若使用SysRq,需要在內核配置時設置Magic SysRq key(CONFIG_MAGIC_SYSRQ)為Y,內核配置信息如下:
CONFIG_MAGIC_SYSRQ:
If you say Y here, you will have some control over the system even
if the system crashes for example during kernel debugging (e.g., you
will be able to flush the buffer cache to disk, reboot the system
immediately or dump some status information). This is accomplished
by pressing various keys while holding SysRq (Alt+PrintScreen). It
also works on a serial console (on PC hardware at least), if you
send a BREAK and then within 5 seconds a command keypress. The
keys are documented in . Don't say Y
unless you really know what this hack does.
Symbol: MAGIC_SYSRQ [=y]
Type : boolean
Prompt: Magic SysRq key
Location:
-> Kernel hacking
Defined at lib/Kconfig.debug:352
Depends on: !UML
Selected by: KGDB_SERIAL_CONSOLE [=y] && KGDB [=y] && TTY [=y]
/proc/sys/kernel/sysrq是內核提供給用戶態可以控制SysRq啟用與否的接口,如果/proc/sys/kernel/sysrq內容為0, 則SysRq被禁用; 如果/proc/sys/kernel/sysrq內容為1, 則SysRq被啟用. 關於/proc/sys/kernel/sysrq的更多描述, 請參考path/to/kernel/Documentation/sysrq.txt
啟用SysRq
echo "1" >/proc/sys/kernel/sysrq
禁用SysRq
echo "0" >/proc/sys/kernel/sysrq
如果需要永久啟用或者禁用SysRq功能,則可在/etc/sysctl.conf中設置kernel.sysrq = 1 (啟用SsyRq)或kernel.sysrq = 0 (禁用SysRq)
# sysctl kernel.sysrq kernel.sysrq = 0 # sysctl -w kernel.sysrq=1 kernel.sysrq = 1 # vi /etc/sysctl.conf ... # Controls the System Request debugging functionality of the kernel kernel.sysrq = 1 ...
SysRq的命令鍵有
'r' - Turns off keyboard raw mode and sets it to XLATE.
'k' - Secure Access Key (SAK) Kills all programs on the current virtual
console. NOTE: See important comments below in SAK section.
'b' - Will immediately reboot the system without syncing or unmounting
your disks.
'o' - Will shut your system off (if configured and supported).
's' - Will attempt to sync all mounted filesystems.
'u' - Will attempt to remount all mounted filesystems read-only.
'p' - Will dump the current registers and flags to your console.
't' - Will dump a list of current tasks and their information to your
console.
'm' - Will dump current memory info to your console.
'0'-'9' - Sets the console log level, controlling which kernel messages
will be printed to your console. ('0', for example would make
it so that only emergency messages like PANICs or OOPSes would
make it to your console.)
'e' - Send a SIGTERM to all processes, except for init.
'i' - Send a SIGKILL to all processes, except for init.
'l' - Send a SIGKILL to all processes, INCLUDING init. (Your system
will be non-functional after this.)
'h' - Will display help ( actually any other key than those listed
above will display help. but 'h' is easy to remember :-)