Answers:
这些是可用的SysRq函数:
0 - disable every SysRq function.
1 - enable every SysRq function.
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
256 - allow nicing of all RT tasks
438
= 2 + 4 + 16 + 32 + 128 + 256
,因此仅允许与这些数字关联的功能。阅读文档中的所有内容。
如果转换438
为基数2(110110110
),则更容易看到。
1 1 0 1 1 0 1 1 0
^256 ^128 ^64 ^32 ^16 ^8 ^4 ^2 ^1
根据您的发行版,您也许可以知道是否CONFIG_MAGIC_SYSRQ
使用以下命令编译了内核:
$ grep SYSRQ /boot/config-$(uname -r)
这对我在Ubuntu上有效。
CONFIG_MAGIC_SYSRQ
某个地方的状态)吗?
CONFIG_MAGIC_SYSRQ
。
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6
十六进制的01b6是十进制的438)。我想y
它已经启用了。如果可以的话,我会给2票。
/boot
,因此check命令为zgrep SYSRQ /proc/config.gz
(或gunzip -c /proc/config.gz | grep SYSRQ
)。
这是一个Bash单线,它将为您打印启用的选项:
for i in $(seq 1 8); do (( ($(</proc/sys/kernel/sysrq) & $((1<<$i))) > 0 )) && echo $((1<<$i)); done
当位掩码设置为438时,允许/禁止使用哪些SysRq功能?
$ for i in $(seq 1 8); do (( (438 & $((1<<$i))) > 0 )) && echo $((1<<$i)); done
2
4
16
32
128
256
有关含义,请参阅William的答案。
要启用所有选项,请运行:
echo 1 | sudo tee /proc/sys/kernel/sysrq
要使其持久,请运行:
echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf