Bagaimana cara memeriksa fungsi SysRq mana yang diaktifkan?

15

File tersebut /proc/sys/kernel/sysrqberisi satu nomor, seperti:

  • 1 (aktifkan semua perintah SysRq),
  • 0 (menonaktifkan semua),
  • atau bilangan bulat positif basis-10 yang berfungsi sebagai bitmask biner, memungkinkan subset fungsi.

Bisakah seseorang tolong beri tahu saya fungsi SysRq mana yang diizinkan / tidak diizinkan ketika bitmask diatur 438?


$ cat /proc/sys/kernel/sysrq
438
user001
sumber

Jawaban:

22

Ini adalah fungsi SysRq yang tersedia:

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, jadi hanya fungsi yang terkait dengan angka-angka yang diizinkan. Baca semua tentang itu di dokumentasi .

Jika Anda mengonversi 438ke basis 2 ( 110110110) itu bahkan lebih mudah dilihat.

1     1     0    1    1    0   1   1   0
^256  ^128  ^64  ^32  ^16  ^8  ^4  ^2  ^1

Bergantung pada distribusi Anda, Anda mungkin dapat mengetahui apakah kernel dikompilasi dengan CONFIG_MAGIC_SYSRQmenggunakan perintah ini:

$ grep SYSRQ /boot/config-$(uname -r)

Ini berfungsi untuk saya di Ubuntu.

William Jackson
sumber
Ah, itu hanya kombinasi linear dari bitmas individual. Terima kasih banyak.
user001
Satu tindak lanjut: Jika tidak ada yang terjadi ketika saya melakukan Alt + SysRq + (kunci perintah), maka saya kira ini berarti bahwa sysrq tidak diaktifkan ketika kernel diinstal. Apakah ada cara sederhana untuk memeriksa apakah sysrq diaktifkan atau tidak (misalnya, dapatkah saya menemukan status CONFIG_MAGIC_SYSRQsuatu tempat)?
user001
3
Saya menambahkan cara yang mungkin untuk memeriksa CONFIG_MAGIC_SYSRQ.
William Jackson
Terima kasih. Bekerja untuk saya di Debian juga. Output: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(01b6 dalam hex adalah 438 dalam desimal). Saya kira ycara itu telah diaktifkan. Akan memberikan 2 suara jika saya bisa.
user001
1
Pada banyak distro Linux, konfigurasi disimpan di dalam kernel itu sendiri, bukan di /boot, sehingga perintah ceknya adalah zgrep SYSRQ /proc/config.gz(ataugunzip -c /proc/config.gz | grep SYSRQ ).
user1686
2

Ini adalah Bash one-liner yang akan mencetak Anda opsi yang diaktifkan:

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

Fungsi SysRq mana yang diizinkan / tidak diizinkan ketika bitmask diatur ke 438?

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

Untuk artinya, lihat jawaban William .


Untuk mengaktifkan semua opsi, jalankan:

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

Untuk membuatnya gigih, jalankan:

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