Làm cách nào để kiểm tra chức năng SysRq nào được bật?


15

Tệp /proc/sys/kernel/sysrqnày chứa một số duy nhất, chẳng hạn như:

  • 1 (kích hoạt tất cả các lệnh SysRq),
  • 0 (vô hiệu hóa tất cả),
  • hoặc một số nguyên dương cơ số 10 có chức năng như một bitmask nhị phân, cho phép một tập hợp con các hàm.

Ai đó có thể vui lòng cho tôi biết các hàm SysRq nào được phép / không được phép khi bitmask được đặt thành 438không?


$ cat /proc/sys/kernel/sysrq
438

Câu trả lời:


22

Đây là các hàm SysRq có sẵn:

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, vì vậy chỉ các hàm liên quan đến những số đó được cho phép. Đọc tất cả về nó trong tài liệu .

Nếu bạn chuyển đổi 438sang cơ sở 2 ( 110110110), nó thậm chí còn dễ nhìn hơn.

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

Tùy thuộc vào bản phân phối của bạn, bạn có thể biết liệu kernel đã được biên dịch CONFIG_MAGIC_SYSRQbằng lệnh này chưa:

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

Điều này làm việc cho tôi trên Ubuntu.


Ah, nó chỉ là một sự kết hợp tuyến tính của các bitmasks riêng lẻ. Cảm ơn rất nhiều.
dùng001

Một lần theo dõi: Nếu không có gì xảy ra khi tôi thực hiện Alt + SysRq + (một phím lệnh), thì tôi cho rằng điều này có nghĩa là sysrq không được kích hoạt khi kernel được cài đặt. Có cách nào đơn giản để kiểm tra xem sysrq có được bật hay không (ví dụ: tôi có thể tìm trạng thái của CONFIG_MAGIC_SYSRQmột nơi nào đó không)?
dùng001

3
Tôi đã thêm một cách có thể để kiểm tra CONFIG_MAGIC_SYSRQ.
William Jackson

Cảm ơn. Làm việc cho tôi trên Debian là tốt. Đầu ra: CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_MASK=0x01b6(01b6 trong hex là 438 ở dạng thập phân). Tôi cho rằng ynó có nghĩa là nó đã được kích hoạt. Sẽ cho 2 phiếu bầu nếu tôi có thể.
dùng001

1
Trên nhiều bản phân phối Linux, cấu hình được giữ trong chính kernel chứ không phải trong /boot, vì vậy lệnh kiểm tra sẽ là zgrep SYSRQ /proc/config.gz(hoặc gunzip -c /proc/config.gz | grep SYSRQ).
dùng1686

2

Đây là một lớp lót Bash sẽ in cho bạn các tùy chọn được kích hoạt:

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

Những hàm SysRq nào được phép / không được phép khi bitmask được đặt thành 438?

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

Về ý nghĩa, hãy tham khảo câu trả lời của William .


Để bật tất cả các tùy chọn, hãy chạy:

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

Để làm cho nó bền bỉ, chạy:

echo kernel.sysrq=1 | sudo tee /etc/sysctl.d/20-sysrq.conf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.