Як перевірити, які функції 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)

Це працює для мене на Ubuntu.


Ах, це просто лінійна комбінація окремих бітових масок. Дуже дякую.
user001

Одне подальше спостереження: Якщо нічого не відбувається, коли я роблю Alt + SysRq + (командний ключ), то, мабуть, це означає, що sysrq не був увімкнений під час встановлення ядра. Чи є простий спосіб перевірити, чи ввімкнено sysrq (наприклад, чи можу я CONFIG_MAGIC_SYSRQдесь знайти статус )?
user001

3
Я додав можливий спосіб перевірити CONFIG_MAGIC_SYSRQ.
Вільям Джексон

Спасибі. Працював для мене і на Debian. Вихід: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(01b6 в шістнадцятковій частині - 438 в десятковій частині). Я припускаю, що yце було дозволено. Я дав би 2 голоси, якщо зможу.
user001

1
У багатьох дистрибутивах Linux конфігурація зберігається в самому ядрі, а не в /bootтому, щоб команда check була zgrep SYSRQ /proc/config.gz(або gunzip -c /proc/config.gz | grep SYSRQ).
користувач1686

2

Ось один вкладиш 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.