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 工具分析
相关推荐
深思慎考20 小时前
LinuxC++项目开发日志——基于正倒排索引的boost搜索引擎(2——Parser解析html模块)
linux·c++·搜索引擎
冠希陈、21 小时前
云锁客户端连不上服务器处理
linux·运维·服务器
似水এ᭄往昔21 小时前
【Linux】--入门、基础命令
linux·服务器
做运维的阿瑞21 小时前
Linux 企业级备份体系实战:cron/anacron/restic/rclone 对比与脚本总结
linux·运维·服务器·后端·学习·系统架构·centos
喜欢吃燃面21 小时前
Linux:基本指令(一)
linux·学习
ziyue757521 小时前
idea终端添加git-bash,支持linux的shell语法
linux·git·bash·idea·软件
大聪明-PLUS21 小时前
为未知 USB 设备编写 Linux 内核驱动程序
linux·嵌入式·arm·smarc
2301_7679026421 小时前
10. Linux 系统启动原理
linux·运维·服务器
☆璇21 小时前
【Linux】Ext系列文件系统(下)
linux·运维·服务器
_w_z_j_21 小时前
Linux----使用vim编辑器
linux·编辑器·vim