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

相关文章
|
7月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
612 3
Linux系统禁用swap
|
7月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1143 3
|
8月前
|
安全 网络协议 Linux
深入理解Linux内核模块:加载机制、参数传递与实战开发
本文深入解析了Linux内核模块的加载机制、参数传递方式及实战开发技巧。内容涵盖模块基础概念、加载与卸载流程、生命周期管理、参数配置方法,并通过“Hello World”模块和字符设备驱动实例,带领读者逐步掌握模块开发技能。同时,介绍了调试手段、常见问题排查、开发规范及高级特性,如内核线程、模块间通信与性能优化策略。适合希望深入理解Linux内核机制、提升系统编程能力的技术人员阅读与实践。
731 1
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
716 3
Linux系统初始化脚本
|
8月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
544 18
|
7月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
822 1
|
7月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1239 1
|
8月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
2146 10
|
8月前
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
1402 0

热门文章

最新文章