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 + REISUB


6. 安全与权限

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

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

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

    ini 复制代码
    sysctl -w kernel.sysrq=16    # 只允许 sync

7. 内核调试用途

SysRq 常被用于:

  • 分析死锁、软/硬 lockup
  • 收集内存、进程、寄存器状态
  • 触发 crash dump 供后续使用 crash 工具分析
相关推荐
梅孔立8 分钟前
linux 秒 安装谷歌浏览器 区分ubuntu和centos 给python爬取网站使用
linux·ubuntu·centos
kuidun1 小时前
Linux常见指令大全:从入门到精通
linux·运维·chrome·linux入门指令
哈基米喜欢哈哈哈3 小时前
进程和线程
java·linux·windows·笔记
chengpei1473 小时前
Ubuntu Server系统安装磁盘分区方案
linux·运维·ubuntu
现实与幻想~4 小时前
Linux:企业级WEB应用服务器TOMCAT
linux·前端·tomcat
ZERO的秃头之路5 小时前
WMware的安装以及Ubuntu22的安装
linux·服务器·ubuntu
daiyanyun5 小时前
Ubuntu 20.04 虚拟机安装完整教程:从 VMware 到 VMware Tools
linux·c语言·c++·ubuntu
轻松Ai享生活6 小时前
Linux CVE详解
linux
努力自学的小夏6 小时前
RK3568 Linux驱动学习——新字符设备驱动
linux·arm开发·驱动开发·笔记·学习