কোন SysRq ফাংশন সক্ষম করা আছে তা কীভাবে পরীক্ষা করবেন?


15

ফাইলটিতে /proc/sys/kernel/sysrqএকটি একক সংখ্যা রয়েছে, যেমন:

  • 1 (সমস্ত সিসআরকি কমান্ড সক্ষম করুন),
  • 0 (সব বিকল করে দাও),
  • বা বেস -10 পজিটিভ পূর্ণসংখ্যা যা বাইনারি বিটমাস্ক হিসাবে কাজ করে, কার্যগুলির একটি উপসেট সক্ষম করে।

কেউ দয়া করে আমাকে বলতে পারবেন যে বিটমাস্ক সেট করা থাকলে কোন সিসআরকিউ ফাংশন অনুমোদিত / অনুমোদিত নয় 438?


$ cat /proc/sys/kernel/sysrq
438

উত্তর:


22

এগুলি উপলব্ধ সিসআরকি ফাংশন:

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)

উবুন্টুতে এটি আমার জন্য কাজ করে।


আহ, এটি পৃথক বিটমাস্কের কেবল একটি রৈখিক সংমিশ্রণ। অনেক ধন্যবাদ.
ব্যবহারকারী001

একটি ফলোআপ: আমি যখন Alt + SysRq + (একটি কমান্ড কী) করি না তখন যদি কিছু না ঘটে থাকে তবে আমি মনে করি এর অর্থ হ'ল কার্নেল ইনস্টল করার সময় সিসার্ক সক্ষম করা হয়নি। সিসার্ক সক্ষম হয়েছে কিনা তা যাচাই করার কোনও সহজ উপায় আছে (উদাহরণস্বরূপ, আমি CONFIG_MAGIC_SYSRQকোথাও এর স্থিতিটি খুঁজে পেতে পারি )?
ব্যবহারকারী001

3
আমি চেক করার একটি সম্ভাব্য উপায় যুক্ত করেছি CONFIG_MAGIC_SYSRQ
উইলিয়াম জ্যাকসন

ধন্যবাদ। আমার জন্য ডেবিয়ানের জন্যও কাজ করেছেন। আউটপুট: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(হেক্সে 01b6 দশমিক 438 হয়)। আমি মনে করি yউপায়গুলি সক্ষম হয়েছে। আমি পারলে ২ টি আপ-ভোট দিতাম।
ব্যবহারকারী001

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 তে সেট করা থাকলে কোন সিসআরকিউ ফাংশনগুলিকে অনুমোদিত / অনুমোদিত নয়?

$ 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.