Linux sysrq使用

1. 介绍

Sysrq被称为”魔术组合键”, 是内建于Linux内核的调试工具。只要内核没有完全锁住(还可以响应中断),不管内核在做什么事情,使用这些组合键都可以搜集包括系统内存使用、CPU任务处理、进程运行状态等系统运行信息。

更详细信息可以查看内核文档:Documentation/admin-guide/sysrq.rst

2. sysrq使能

使用sysrq组合键,需要在内核打开配置

CONFIG_MAGIC_SYSRQ

可以通过以下节点查看sysrq的支持情况和控制sysrq响应的命令键值

cat /proc/sys/kernel/sysrq

sysrq值说明如下:

in /proc/sys/kernel/sysrq:
0 - disable sysrq completely
1 - enable all functions of sysrq
1 - bitmask of allowed sysrq functions (see below for detailed function description):
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
256 - allow nicing of all RT tasks

3. sysrq调试使用

在串口可以使用的情况下,都可以通过以下节点来实现sysrq的调试功能

echo funckey > /proc/sysrq-trigger

sysrq常用调试功能说明如下表所示:

功能键 功能说明
b 重启系统
c 触发访问空指针
d 查看锁持有情况
e 向除了init进程的其他进程发送SIGTERM信号
f 触发oom killer进行内存回收
g 用于kgdb
h 展示帮助信息
i 向除了init进程的其他进程发送SIGKILL信号
l 打印当前online cpu的栈回溯信息
m 打印当前系统的内存信息
o 关机(需要系统支持)
p 打印当前进程的寄存器和flag
t 打印当前系统所有进程的栈回溯信息
w 打印当前block状态(uninterruptable)的进程栈回溯信息
0-9 设置控制台loglevel

更多信息,请看内核文档:Documentation/admin-guide/sysrq.rst。

3.1 键盘使用sysrq

在PC下,并没有串口控制台,因此很多sysrq功能都是通过键盘实现。

在sysrq的驱动实现中,会为input device注册一个sysrq功能键的处理接口,当键盘输入sysrq的功能键时,就会转发到sysrq对应的handler进行处理。

键盘触发sysrq功能键为:alt + sysrq + key,如查看系统内存信息,可以使用 alt + sysrq + m

注:SYSRQ键也就是键盘上的Print Screen键.

3.2 嵌入式设备使用sysrq

在嵌入式设备,一般console都是使用串口,串口并不是标准的input devices,因此通过键盘组合按键,是无法触发sysrq相应的功能的,串口设备,一般都是通过tty子系统注册的,如果需要支持sysrq,那需要对应的串口驱动支持才行,假设串口驱动已经支持sysrq了,如何触发呢?

从sysrq.rst文档可知,通过串口发送BREAK + command key就可以触发sysrq相应的功能了。

在使用mobaxterm当串口工具时,按如下所示即可:

在串口终端鼠标右键,选择special command—>break—> command key(如m)

如下图所示:

如果使用SecureCRT工具,则按以下步骤配置即可:


单击Mapped Keys后,进行按键映射设置,弹出如下对话框后,输入一个要映射的原始组合键,比如我这里使用“Ctrl + D”,则在按键上按下“Ctrl + D”。

在按下“Ctrl + D”后,调出最终要映射的目标键,在Function里选择“Telnet Function”,在后面选择“TN_BREAK”,点击“OK”设置完成。

设置完成后,连接上串口,就可以通过ctrl + D + command key(如m) 触发sysrq功能了,如下图所示:

3.3 串口驱动支持sysrq

在tty core层,已经支持对sysrq的处理,因此串口驱动只需要在接收中断中对接收到的sysrq字符进行特殊处理即可。

串口驱动需要定义SUPPORT_SYSRQ,如下所示:

#if defined(CONFIG_SERIAL_AMBA_PL011_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
#define SUPPORT_SYSRQ
#endif

Linux sysrq使用相关推荐

  1. linux, sysrq,acpi,apci,uio,subsystem daemon

    linux, sysrq,acpi,apci Linux设备模型   一.sysfs文件系统: sysfs文件系统是Linux2.6内核引入的,它被看成是与proc.devfs和devpty等同类别的 ...

  2. linux sysrq使用方法,[转载]Linux中SysRq的使用

    在终端上同时按Alt, SysRq和命令键则会执行SysRq命令, SysRq键就是"Print Screen"健. 比如Alt+SysRq+b则重启机器.ALT+SysRQ+X( ...

  3. linux sysrq使用方法,Linux内核调试方法总结之sysrq

    sysrq [用途] Sysrq被称为"魔术组合键", 是内建于Linux内核的调试工具.只要内核没有完全锁住,不管内核在做什么事情,使用这些组合键都可以搜集包括系统内存使用.CP ...

  4. linux sysrq使用方法,Linux中SysRq的使用[zt]

    Linux中SysRq的使用[zt] Linux中SysRq的使用Linux中SysRq的使用 作者:blue_stone(blue_stone@xinhuanet.com) 转载请注明出处: htt ...

  5. Linux SysRq

    当Linux  系统不能正常响应用户请求 时, 可以使用SysRq小工具控制Linux. 一 SysRq的启用与关闭 要想启用SysRq, 需要在配置内核时设置Magic SysRq key (CON ...

  6. linux+sysrq+键盘调试,内核调试 – MagicSysRq - 嵌入式 Linux 知识库

    Note: This article is currently only a draft and is a part of a series of articles I'm going to publ ...

  7. Linux sysrq功能

    1.简介 sysrq是内核提供的一组魔数组合键,通过该组合键可以直接触发内核的特定功能,如重启系统,设置loglevel等.在内核发生故障时,只要键盘还有响应就可以使用它们触发相应操作. 2.关闭 e ...

  8. Linux内核(十五)sysrq 详解 I —— 使用手册

    文章目录 sysrq 介绍 触发sysrq事件的方式 Linux sysrq使用 1.启动 sysrq 2.sysrq事件触发命令 sysrq 介绍 这是一组"魔术组合键",只要内 ...

  9. Linux 调试之SysRq

    文章目录 前言 一.SysRq简介 二.SysRq的使用 2.1 获取内存快照 2.2 获取任务快照 三.SysRq源码解析 3.1 源码分析 3.2 源码例程分析 3.3 add SysRQ key ...

最新文章

  1. 分布式技术追踪 2017年第十二期
  2. Linux 小知识翻译 - 「RAID」
  3. 前端JS——滑动滑块验证登录(源码及效果)
  4. Spring【AOP模块】就是这么简单
  5. Django在admin.py中设置date_hierarchy时报错
  6. [转]C#中多路IP摄像机的视频监控系统
  7. go语言快速刷《程序员面试金典》(2)
  8. linux下使用odbc连接mysql_Linux环境下通过ODBC访问MSSql Server
  9. Android学习笔记(四)——EditText简单登录页面设计
  10. neo4j安装与示例
  11. python自动化运维平台下载_5、python自动化运维——集中化管理平台Ansible
  12. 华为ensp常用操作命令 网络人凭经验含泪总结
  13. Unity3D 制作按钮开关,旋钮开关,摇杆手柄 插件
  14. 要写好综述类论文?这几个点你需要注意
  15. |羊城之夏2019市民文化節遇見藝術高雅藝術公益講座開講海报廣州市文化館原創發佈於2019年7月9日星期二之粤语文稿
  16. MySQL的事务和存储引擎
  17. 小程序webview组件实践
  18. 如何在计算机中增加硬盘分区,win10系统电脑下增加新磁盘分区的操作方法
  19. windows7设置通电自启动_怎么让Windows7系统电脑自动开机?
  20. 第6章 应用逻辑顺序

热门文章

  1. c语言实现时间片轮转调度算法
  2. Android截取数组的方法,Android仓库建设——JNI的数组交互处理
  3. Android UI 中如何利用表格进行布局
  4. 专利孔卵形装置的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  5. 电子商务新风口在哪?
  6. 3.13_显示界面线程是主线程,其他的都是子线程
  7. Opencv 环境配置
  8. 移动硬盘删除的文件能恢复吗,怎么恢复硬盘删除的文件
  9. 美术学习3310:绑定基础
  10. 删除node_modules文件夹后重新安装插件后执行npm run build报错问题的解决办法