13

Файл /proc/sys/kernel/sysrq содержит одно число, например:

  • 1 (включить все команды SysRq),
  • 0 (отключить все),
  • или положительное целое число из 10, которое действует как двоичная битовая маска, позволяя выполнять поднабор функций.

Может кто-нибудь сказать мне, какие функции SysRq разрешены / запрещены, когда битовая маска установлена на 438?


$ cat /proc/sys/kernel/sysrq
438

2 ответа2

17

Это доступные функции 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.

0

Вот одна строчка Bash, которая напечатает вам включенные опции:

for i in $(seq 1 8); do (( ($(</proc/sys/kernel/sysrq) & $((1<<$i))) > 0 )) && echo $((1<<$i)); done

Какие функции SysRq разрешены / запрещены, когда битовая маска установлена на 438?

$ for i in $(seq 1 8); do (( (438 & $((1<<$i))) > 0 )) && echo $((1<<$i)); done
2
4
16
32
128
256

Что касается значения, обратитесь к ответу Уильяма.


Чтобы включить все параметры, выполните:

echo 1 | sudo tee /proc/sys/kernel/sysrq

Чтобы сделать это постоянным, запустите:

echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .