SysRq详解

SysRq详解

1. 什么是 SysRq

SysRq(Magic System Request Key) 是 Linux 内核中的一种紧急命令接口,可以通过特定的按键组合向内核发送指令,即使系统已经挂起、无响应或进入某种锁死状态,也可能还能执行这些命令。

它的设计目标是:

在系统几乎失去响应时,仍能进行安全关机、重启或收集调试信息。

提供紧急的调试、诊断和恢复手段。

避免数据损坏(例如先卸载文件系统再重启)。

2. 启用与关闭

是否启用 SysRq 由内核参数 kernel.sysrq 控制:

bash

复制代码

cat /proc/sys/kernel/sysrq # 查看是否启用

值的含义:

0:完全禁用 SysRq。

1:启用所有功能。

其他值:按位掩码(bitmask)启用部分功能(安全模式)。

启用方法:

bash

复制代码

echo 1 > /proc/sys/kernel/sysrq

# 或持久化到 /etc/sysctl.conf

sysctl -w kernel.sysrq=1

3. 常见触发方式

键盘方式 (本地物理控制台)

通常是:

xml

复制代码

Alt + SysRq + <命令键>

在 PC 键盘上,SysRq 键一般与 Print Screen 键共用。

串口/虚拟终端方式

在某些虚拟化或远程调试中,可以通过向 /proc/sysrq-trigger 写入命令触发:

bash

复制代码

echo b > /proc/sysrq-trigger # 立即重启

echo m > /proc/sysrq-trigger # 输出内存信息到日志

4. 常用命令键

命令键

功能

说明

b

立即重启

不卸载文件系统,可能丢数据

o

立即关机

s

同步所有已挂载的文件系统

类似 sync

u

重新挂载所有文件系统为只读

防止数据损坏

m

显示内存信息

输出到 dmesg

t

显示任务列表(进程栈信息)

输出到 dmesg

p

显示当前 CPU 寄存器信息

调试用

c

触发内核崩溃(生成 crash dump)

需配置 kdump

e

向所有进程发送 SIGTERM

i

向所有进程发送 SIGKILL

r

关闭键盘原始模式(让 Ctrl+Alt+Del 有效)

h

显示支持的 SysRq 命令帮助

5. 经典用法 ------ REISUB

这是一个安全重启的顺序(避免数据损坏):

css

复制代码

R - 将键盘切换回原始模式

E - 向所有进程发送 SIGTERM

I - 向所有进程发送 SIGKILL

S - 同步磁盘数据

U - 重新挂载文件系统为只读

B - 立即重启

按法(间隔 1-2 秒):

Alt + SysRq + R → E → I → S → U → B

6. 安全与权限

物理访问风险:本地有人可直接使用 SysRq 执行关机/重启/转储,需在服务器环境中谨慎启用。

远程触发 :通过 /proc/sysrq-trigger 需要 root 权限,普通用户无法使用。

生产环境建议:启用有限功能(bitmask),例如:

ini

复制代码

sysctl -w kernel.sysrq=16 # 只允许 sync

7. 内核调试用途

SysRq 常被用于:

分析死锁、软/硬 lockup

收集内存、进程、寄存器状态

触发 crash dump 供后续使用 crash 工具分析

相关推荐

䳭怎么读
best365网页版登录官方网

䳭怎么读

📅 09-18 👁️ 7643