Hangi SysRq işlevlerinin etkin olduğunu nasıl kontrol edebilirim?


15

Dosya /proc/sys/kernel/sysrqtek bir sayı içerir, örneğin:

  • 1 (tüm SysRq komutlarını etkinleştir),
  • 0 (Tümünü devre dışı bırak),
  • veya ikili bir bit maskesi olarak işlev gören ve işlevlerin bir alt kümesini sağlayan bir temel-10 pozitif tam sayı.

Birisi bana bitmask olarak ayarlandığında hangi SysRq işlevlerine izin verildiğini / izin verilmediğini söyleyebilir 438mi?


$ cat /proc/sys/kernel/sysrq
438

Yanıtlar:


22

Kullanılabilir SysRq işlevleri şunlardır:

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, bu nedenle yalnızca bu numaralarla ilişkili işlevlere izin verilir. Bununla ilgili her şeyi belgelerde okuyun .

438Base 2'ye ( 110110110) dönüştürürseniz görmek daha da kolaydır.

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

Dağıtımınıza bağlı olarak, çekirdeğin CONFIG_MAGIC_SYSRQbu komutu kullanarak derlenip derlenmediğini söyleyebilirsiniz :

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

Bu benim için Ubuntu'da çalışıyor.


Ah, bu sadece bireysel bitmasklerin doğrusal bir kombinasyonudur. Çok teşekkürler.
user001

Bir takip: Alt + SysRq + (bir komut tuşu) yaptığımda hiçbir şey olmazsa, bu, çekirdek yüklendiğinde sysrq'nin etkin olmadığı anlamına gelir. Sysrq'nin etkin olup olmadığını kontrol etmenin basit bir yolu var mı (örneğin, bir yerlerin durumunu bulabilir miyim CONFIG_MAGIC_SYSRQ)?
user001

3
Kontrol etmek için olası bir yol ekledim CONFIG_MAGIC_SYSRQ.
William Jackson

Teşekkürler. Benim için Debian üzerinde de çalıştım. Çıktı: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(onaltılı olarak 01b6, ondalık olarak 438'dir). Sanırım yetkin olduğu anlamına geliyor. Eğer yapabilirim 2-up-oy verecekti.
user001

1
Birçok Linux dağıtımında, yapılandırma çekirdeğin içinde tutulur, içinde değil /boot, bu nedenle check komutu zgrep SYSRQ /proc/config.gz(veya gunzip -c /proc/config.gz | grep SYSRQ) olur.
user1686

2

İşte size etkin seçenekleri yazdıracak bir Bash tek astarı:

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

Bitmask 438 olarak ayarlandığında hangi SysRq işlevlerine izin verilir / izin verilmez?

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

Anlam için William'ın cevabına bakın .


Tüm seçenekleri etkinleştirmek için şunu çalıştırın:

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

Kalıcı hale getirmek için şunu çalıştırın:

echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.