답변:
사용 가능한 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)
이것은 우분투에서 나에게 효과적입니다.
CONFIG_MAGIC_SYSRQ
어딘가 의 상태를 찾을 수 있습니까)?
CONFIG_MAGIC_SYSRQ
.
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6
(16 진수 01b6은 10 진수 438입니다). 나는 y
그것이 활성화 된 수단 이라고 가정합니다 . 내가 할 수 있다면 2 개의 투표를 할 것입니다.
/boot
되므로 check 명령은 zgrep SYSRQ /proc/config.gz
(또는 gunzip -c /proc/config.gz | grep SYSRQ
)입니다.
다음은 사용 가능한 옵션을 인쇄하는 Bash one-liner입니다.
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