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

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

什么是SysRq

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

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

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

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

SysRq内核配置选项

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

CONFIG_MAGIC_SYSRQ=y

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

按住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

通过/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驱动IO篇——异步IO

Linux驱动IO篇——IO多路复用

Linux驱动IO篇——阻塞/非阻塞IO

Linux驱动IO篇——ioctl设备操作

一个Linux驱动工程师必知的内核模块知识

Linux内核中常用的数据结构和算法

Linux内核中常用的C语言技巧

Linux内核基础篇——常用调试技巧汇总

Linux内核基础篇——动态输出调试

Linux内核基础篇——printk调试

Linux内核基础篇——initcall

相关文章
|
1天前
|
存储 安全 算法
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)
10 0
|
1天前
|
存储 缓存 安全
Linux系统内核面试题
Linux系统内核面试题
11 3
|
1天前
|
算法 Linux 数据安全/隐私保护
【Linux | C++ 】生产者消费者模型(Linux系统下C++ 代码模拟实现)
【Linux | C++ 】生产者消费者模型(Linux系统下C++ 代码模拟实现)
5 0
|
1天前
|
数据采集 Linux Go
Linux系统是如何控制串口收发数据的?
Linux系统是如何控制串口收发数据的?
11 0
|
2天前
|
Linux 网络安全 数据库
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
|
2天前
|
缓存 运维 算法
深入理解Linux内核的虚拟内存管理
【5月更文挑战第6天】 在现代操作系统中,尤其是类Unix系统如Linux中,虚拟内存管理是一项核心功能,它不仅支持了多任务环境,还提供了内存保护和抽象。本文将深入探讨Linux操作系统的虚拟内存子系统,包括分页机制、虚拟地址空间布局、页面置换算法以及内存分配策略。通过对这些概念的剖析,我们旨在为读者揭示Linux如何有效地管理和优化物理内存资源,并确保系统的稳定运行与高效性能。
|
2天前
|
Linux 调度 开发者
探索Linux内核调度:公平与效率的平衡艺术
【5月更文挑战第6天】 随着多核处理器的普及,操作系统的进程调度策略对系统性能的影响愈加显著。Linux作为广泛应用的开源操作系统,其内核调度器的设计哲学和实现细节一直是系统研究领域的热点。本文将深入分析Linux内核调度器的工作原理,探讨如何在保证公平性和效率之间取得平衡,并考察最新的调度器CFS(Completely Fair Scheduler)如何适应现代硬件架构的需求。
|
2天前
|
存储 移动开发 Linux
Linux系统之部署h5ai目录列表程序
【5月更文挑战第3天】Linux系统之部署h5ai目录列表程序
13 1
|
7天前
|
运维 监控 Linux
提升系统稳定性:Linux内核参数调优实战
【5月更文挑战第1天】 在运维领域,保障服务器的高效稳定运行是核心任务之一。Linux操作系统因其开源、可靠和灵活的特点被广泛应用于服务器中。本文将深入探讨通过调整Linux内核参数来优化系统性能,提升服务器的稳定性和响应能力。文章首先介绍了内核参数调优的必要性和基本原则,然后详细阐述了调优过程中的关键步骤,包括如何监控当前系统状态,确定性能瓶颈,选择合适的参数进行调优,以及调优后的测试与验证。最后,文中提供了一些常见问题的解决策略和调优的最佳实践。
33 5
|
7天前
|
Linux
Linux系统ps命令
这些是一些常见的 `ps`命令选项和用法,用于查看系统中运行的进程及其相关信息。您可以根据需要选择合适的选项以满足您的任务要求。
23 0

热门文章

最新文章