0
点赞
收藏
分享

微信扫一扫

Linux内核基础篇——神奇的系统请求键SysRq

1.什么是SysRq

Linux内核提供了一些与用户空间的通信机制,例如procfs接口和sysfs接口,大部分的这些接口都可以作为获取内核信息的手段。

但除了这些接口,内核也提供了专门的调试机制——系统请求键SysRq。

SysRq被内核称为“Magic SysRq key”,即“神奇的系统请求键”。

简单来说,就是可以通过键盘的按键获取内核的信息,用于调试。相当于是一个快捷键。

2.SysRq内核配置选项

要使用系统请求键SysRq,内核配置选项中必须打开CONFIG_MAGIC_SYSRQ

CONFIG_MAGIC_SYSRQ=y

SysRq键是复合键【Alt+ SysRq】,大多数键盘的SysRq和PrtSc键是复用的。 按住SysRq复合键, 再输入第三个命令键, 可以执行相应的系统调试命令。 例如,输入t键, 可以得到当前运行的进程和所有进程的堆栈跟踪。 回溯跟踪将被写到/var/log/messages 文件中。 如果内核都配置好了, 系统应该己经转换了内核的符号地址。
系统请求键命令说明

键命令 说明
SysRq-b 重启机器
SysRq-e 给init之外的所有进程发送SIGTERM信号
SysRq-i 给init之外的所有进程发送SIGKILL信号
SysRq-k 安全访问键:杀掉这个控制台上的所有进程
SysRq-l 给包括init在内的所有进程发送SIGKILL信号
SysRq-m 在控制台上显示内存信息
SysRq-o 关闭机器
SysRq-p 在控制台上显示寄存器
SysRq-r 关闭键盘的原始模式
SysRq-s 同步所有挂接的磁盘
SysRq-t 在控制台上显示所有的任务信息
SysRq-u 卸载所有已经挂载的磁盘

以上是系统请求键SysRq命令的主要说明,更多的内容可以参考内核说明文档:Documentation/sysrq.txt

3.通过/proc接口发起系统请求

有些硬件平台可能不能使用SysRq复合键,这种情况下,也可以通过/proc接口进入系统请求状态。

因为在内核配置选项中,使能了CONFIG_MAGIC_SYSRQ选项后,系统启动之后,就会生成/proc/sysrq-trigger节点用于调试。

例如:

产生空指针panic事件,认为导致系统崩溃:

echo c > /proc/sysrq-trigger

导出当前CPU寄存器和标志位信息:

echo p > /proc/sysrq-trigger

在控制台上显示内存信息:

echo m > /proc/sysrq-trigger

echo输出的字符,其实就是第三个键的命令 系统请求键SysRq主要用来辅助调试和拯救系统,在系统宕机或者运行不正常的时候,通过系统请求键SysRq可以查询当前进程执行的状态,从而判断出错的进程和函数。

举报

相关推荐

0 条评论