활성화 된 SysRq 기능을 확인하는 방법은 무엇입니까?


15

파일 /proc/sys/kernel/sysrq에는 다음과 같은 단일 번호가 포함됩니다.

  • 1 (모든 SysRq 명령 사용),
  • 0 (모두 비활성화),
  • 또는 이진 비트 마스크로 기능하는 기수 -10 양의 정수로, 기능의 하위 집합을 활성화합니다.

비트 마스크가로 설정되어있을 때 어떤 SysRq 기능이 허용 / 허용되지 않는지 알려주십시오 438.


$ cat /proc/sys/kernel/sysrq
438

답변:


22

사용 가능한 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)

이것은 우분투에서 나에게 효과적입니다.


아, 그것은 개별 비트 마스크의 선형 조합 일뿐입니다. 매우 감사합니다.
user001

하나의 후속 조치 : Alt + SysRq + (명령 키)를 수행해도 아무런 변화가 없으면 커널을 설치할 때 sysrq가 활성화되지 않았다고 가정합니다. sysrq의 활성화 여부를 확인하는 간단한 방법이 있습니까 (예 : CONFIG_MAGIC_SYSRQ어딘가 의 상태를 찾을 수 있습니까)?
user001

3
확인 가능한 방법을 추가했습니다 CONFIG_MAGIC_SYSRQ.
William Jackson

감사. 데비안에서도 저를 위해 일했습니다. 출력 : CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(16 진수 01b6은 10 진수 438입니다). 나는 y그것이 활성화 된 수단 이라고 가정합니다 . 내가 할 수 있다면 2 개의 투표를 할 것입니다.
user001

1
많은 Linux 배포판에서 구성은가 아닌 커널 자체에 유지 /boot되므로 check 명령은 zgrep SYSRQ /proc/config.gz(또는 gunzip -c /proc/config.gz | grep SYSRQ)입니다.
user1686

2

다음은 사용 가능한 옵션을 인쇄하는 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.