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

新闻资讯   2023-06-15 12:02   78   0  

1、什么是SysRq?

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

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

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

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

2、SysRq内核配置选项

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

CONFIG_MAGIC_SYSRQ=y

SysRq键是复合键【Alt+ SysRq】,大多数键盘的SysRqPrtSc键是复用的。

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

3、系统请求键命令说明

键命令说明
SysRq-b重启机器
SysRq-einit之外的所有进程发送SIGTERM信号
SysRq-iinit之外的所有进程发送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

4、通过/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可以查询当前进程执行的状态,从而判断出错的进程和函数。

END

来源:嵌入式Linux充电站

版权归原作者所有,如有侵权,请联系删除。

推荐阅读
华为C/C++编码规范流出
C语言的include没你想的那么简单!
入职Linux驱动工程师后,我才知道的真相…

→点关注,不迷路←

文章引用微信公众号"嵌入式微处理器",如有侵权,请联系管理员删除!

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。