कैसे जांचें कि 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)

यह मेरे लिए उबंटू पर काम करता है।


आह, यह अलग-अलग बिटकॉम्स का एक रैखिक संयोजन है। बहुत बहुत धन्यवाद।
18001 पर उपयोगकर्ता001

एक अनुवर्ती: यदि मैं Alt + SysRq + (एक कमांड कुंजी) करता हूं तो कुछ भी नहीं होता है, तो मुझे लगता है कि कर्नेल स्थापित होने पर sysrq सक्षम नहीं था। क्या यह जांचने का एक सरल तरीका है कि क्या sysrq सक्षम है या नहीं (जैसे, क्या मैं CONFIG_MAGIC_SYSRQकहीं की स्थिति पा सकता हूं )?
user001

3
मैंने जांच के लिए एक संभावित तरीका जोड़ा CONFIG_MAGIC_SYSRQ
विलियम जैक्सन

धन्यवाद। डेबियन पर भी मेरे लिए काम किया। आउटपुट: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(हेक्स में 01b6 दशमलव में 438 है)। मुझे लगता है कि yइसका मतलब सक्षम है। अगर मैं कर सकता तो 2 वोट देता।
user001

1
कई लिनक्स डिस्ट्रोस पर, कॉन्फ़िगरेशन को कर्नेल में ही रखा जाता है, अंदर नहीं /boot, इसलिए चेक कमांड zgrep SYSRQ /proc/config.gz(या gunzip -c /proc/config.gz | grep SYSRQ) होगा।
user1686

2

यहां एक बैश वन-लाइनर है जो आपको सक्षम विकल्पों को मुद्रित करेगा:

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

अर्थ के लिए, विलियम के जवाब को देखें ।


सभी विकल्पों को सक्षम करने के लिए, चलाएं:

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

इसे लगातार बनाए रखने के लिए, दौड़ें:

echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.