0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

sysRq键使用方法

嵌入式与Linux那些事 来源:嵌入式与Linux那些事 2023-02-10 14:16 次阅读

SysRq键简介

SysRq键是一个魔术案件,只要在内核没有完全卡死的情况下,内核都会相应SysRq 键的输入,使用这些组合键都可以搜集包括系统内存使用、CPU任务处理、进程运行状态等系统运行信息

配置

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

修改/etc/sysctl.conf启动SysRq。

kernel.sysrq=1

执行下列命令,使修改生效。

sysctl-p

也可以通过写echo "number" >/proc/sys/kernel/sysrq节点临时使能sysrq功能。

写入不同的值使能不同的功能:

描述/说明
0 完全禁用 sysrq
1 启用 sysrq 的所有功能
2 允许控制终端日志级别
4 允许控制终端日志级别
8 允许调试进程dump
16 允许执行sync命令
32 允许重新挂载文件系统为之读
64 允许发送信号给进程(term,kill,oom-kill)
128 允许重启/关机
256 允许调整实时任务的优先级

如何使用SysRq

echo>/proc/sysrq-trigger

命令键 是区分大小写的。

具体含义如下。

命令键 功能
b 将立即重启系统,不会同步或者卸载磁盘。
c 将执行系统 crash,如果配置了系统 crashdump,将执行 crashdump。
d 显示所有持有的锁。
e 发送 SIGTERM 信号给所有进程,除了 init 进程。
f 将调用 oom killer 杀掉一个过度占用内存的进程,如果什么任务都没杀, 也不会 panic。
g kgdb 使用(内核调试器)。
h 将会显示帮助。(实际上除了这里列举的键,其他的都将显示帮助, 但是 h 容易记住):-)
i 发送 SIGKILL 给所有进程,除了 init 进程。
j 强制性的 “解冻它” - 用于被 FIFREEZE ioctl 操作冻住的文件系统。
k 安全访问秘钥(SAK)杀掉在当前虚拟控制台的所有程序,注意:参考 下面 SAK 节重要论述。
l 显示所有活动 cpu 的栈回溯。
m 将导出当前内存信息到你的控制台。
n 用于使所有实时任务变成普通任务。
o 将关闭系统(如果配置和支持的话)。
p 将导出当前寄存器和标志位到控制台。
q 将导出每个 cpu 上所有已装备的高精度定时器(不是完整的 time_list 文件显示的 timers)和所有时钟事件设备的详细信息。
r 关闭键盘的原始模式,设置为转换模式。
s 将尝试同步所有的已挂载文件系统。
t 将导出当前所有任务列表和它们的信息到控制台。
u 将尝试重新挂载已挂载文件系统为只读。
v 强制恢复帧缓存控制台。
v 触发 ETM 缓存导出 [ARM 架构特有]
w 导出处于不可中断状态(阻塞)的任务。
x 在 ppc/powerpc 架构上用于 xmon 接口。在 sparc64 架构上用于显示全局的 PMU(性能监控单元)寄存器。在 MIPS 架构上导出所有的 tlb 条目。
y 显示全局 cpu 寄存器 [SPARC-64 架构特有]
z 导出 ftrace 缓存信息
0-9 设置控制台日志级别,该级别控制什么样的内核信息将被打印到你的 控制台。(比如 0 ,将使得只有紧急信息,像 PANICs or OOPSes 才能到你的控制台。)

打印内存使用信息

root@firefly:~#echom>/proc/sysrq-trigger
[3100.196187]sysrq:SysRq:ShowMemory
[3100.196675]Mem-Info:
[3100.196931]active_anon:48062inactive_anon:2987isolated_anon:0
[3100.196931]active_file:40449inactive_file:53540isolated_file:0
[3100.196931]unevictable:0dirty:22writeback:0unstable:0
[3100.196931]slab_reclaimable:10518slab_unreclaimable:6599
[3100.196931]mapped:44843shmem:3710pagetables:1568bounce:0
[3100.196931]free:810482free_pcp:497free_cma:0
[3100.199998]DMAfree:3241928kBmin:7920kBlow:9900kBhigh:11880kBactive_anon:192248kBinactive_anon:11948kBactive_file:161796kBinactive_file:214160kBunevictable:0kBisolated(anon):0kBisolated(file):0kBpresent:4030464kBmanaged:3933592kBmlocked:0kBdirty:88kBwriteback:0kBmapped:179372kBshmem:14840kBslab_reclaimable:42072kBslab_unreclaimable:26396kBkernel_stack:5792kBpagetables:6272kBunstable:0kBbounce:0kBfree_pcp:1988kBlocal_pcp:224kBfree_cma:0kBwriteback_tmp:0kBpages_scanned:0all_unreclaimable?no
[3100.204031]lowmem_reserve[]:000
[3100.204414]DMA:272*4kB(U)95*8kB(UM)177*16kB(UME)88*32kB(UME)50*64kB(UM)32*128kB(UM)6*256kB(UM)4*512kB(UM)2*1024kB(M)3*2048kB(UME)785*4096kB(M)=3241928kB
[3100.206208]Node0hugepages_total=0hugepages_free=0hugepages_surp=0hugepages_size=2048kB
[3100.206990]97710totalpagecachepages
[3100.207345]0pagesinswapcache
[3100.207679]Swapcachestats:add0,delete0,find0/0
[3100.208156]Freeswap=0kB
[3100.208425]Totalswap=0kB
[3100.208721]1007616pagesRAM
[3100.209003]0pagesHighMem/MovableOnly
[3100.209352]24218pagesreserved
root@firefly:~#

打印进程列表

root@firefly:~#echot>/proc/sysrq-trigger
[3357.426399]sysrq:SysRq:ShowState
[3357.426902]Calltrace:
[3357.427155][]__switch_to+0x94/0xbc
[3357.427759][]__schedule+0x334/0x65c
[3357.428249][]schedule+0x70/0x84
[3357.428762][]schedule_hrtimeout_range_clock+0x54/0xd8
[3357.429390][]schedule_hrtimeout_range+0x38/0x48
[3357.430004][]SyS_epoll_wait+0x2c0/0x334
[3357.430515][]SyS_epoll_pwait+0xb4/0x104
[3357.431057][]el0_svc_naked+0x24/0x28
[3357.431576]Calltrace:
[3359.224688]runnabletasks:
[3359.224688]taskPIDtree-keyswitchespriowait-timesum-execsum-sleep
[3359.224688]----------------------------------------------------------------------------------------------------------
[3359.226942]watchdog/531-8.99037584200.01041833.6399740.011083/
[3359.227935]migration/5320.0000001100.0064170.7036260.011083/
...............................
[3359.280491]rsyslogd62012549.402602311203.95971013.0672493000146.370846/
[3359.281483]gmain6492780.83708041201.4978750.23479142.333083/
[3359.282473]gdbus6536084.55846323512011.84550588.1433775894.875470/
[3359.283464]probing-thread6572798.85165811200.1712090.0463750.000000/
[3359.284458]gmain66613129.7470178421201.635792160.937875...............................
[3359.347891]kbase_event10875737.99119021000.0000000.0154160.022167/
[3359.348888]kworker/5:0141512729.712418635212094.661328379.266952300531.917073/
[3359.349880]kworker/5:1142113139.623478459212040.804756269.058278218093.165092/
[3359.350919]

打印 CPU 信息

root@firefly:~#echow>/proc/sysrq-trigger
[3461.098259]sysrq:SysRq:ShowBlockedState
[3461.099495]SchedDebugVersion:v0.11,4.4.194+#15
[3461.099987]ktime:3460974.551474
[3461.100559]sched_clk:3461099.486338
[3461.101163]cpu_clk:3461099.486629
[3461.101733]jiffies:4298128273
[3461.102303]
[3461.102457]sysctl_sched
...............................
[3461.106084]
[3461.476753]taskPIDtree-keyswitchespriowait-timesum-execsum-sleep
[3461.476753]----------------------------------------------------------------------------------------------------------
[3461.479007]watchdog/531-8.99037586800.01041834.6398090.011083/
[3461.479999]migration/5320.0000001100.0064170.7036260.011083/
[3461.480990]ksoftirqd/53312976.65500228212031.2629109.5779263226896.156313/
....................
[3461.598951]gdbus9815621.0432456312010.4294157.925751240.024166/
[3461.599945]kbase_event10875737.99119021000.0000000.0154160.022167/
[3461.600943]kworker/5:1142113242.484431632412056.331917371.919231300578.331580/
[3461.601934]kworker/5:0142413267.1288014161203.93226125.07966219671.560460/
[3461.602964]

显示所有活动 cpu 的栈回溯

root@firefly:~#echol>/proc/sysrq-trigger
[3602.003162]sysrq:SysRq:ShowbacktraceofallactiveCPUs
[3602.003919]Calltrace:
[3602.004175][]dump_backtrace+0x0/0x220
root@firefly:~#[3602.004675][]show_stack+0x24/0x30
[3602.005233][]showacpu+0x68/0x84
[3602.005688][]flush_smp_call_function_queue+0x84/0x134
[3602.006303][]generic_smp_call_function_single_interrupt+0x18/0x20
[3602.007007][]handle_IPI+0x19c/0x260
[3602.007490][]gic_handle_irq+0x12c/0x184
[3602.007995]Exceptionstack(0xffffffc0f2f1fd90to0xffffffc0f2f1fec0)
[3602.008580]fd80:00000000000000000000000000000003
[3602.009284]fda0:00000040ee976000000000000000002000ffffffffffffff0000001425865f85
[3602.009988]fdc0:000000000004b382000000000000000300000032b5593519ffffff8008081800
[3602.010691]fde0:000000000000100000000000000000000000000034d5d91d00000040ee976000
[3602.011394]fe00:ffffffc0f2f0a880000000000000000000000000000000000000000000000000
[3602.012098]fe20:0000000030d0080000000346a09ab4640000000000000002ffffffc00a4bac00
[3602.012801]fe40:ffffff80097ace1800000000000000010000034697fd8dddffffff800974e488
[3602.013504]fe60:0000000001ab400000000000010f82440000000000000000ffffffc0f2f1fec0
[3602.014209]fe80:ffffff8008b9eb10ffffffc0f2f1fec0ffffff8008b9eb140000000060000145
[3602.014912]fea0:ffffffc0f2f1fec0ffffff8008b9eb10ffffffffffffffff0000000000000002
[3602.015615][]el1_irq+0xb4/0x140
[3602.016070][]cpuidle_enter_state+0x1cc/0x25c
[3602.016624][]cpuidle_enter+0x34/0x44
[3602.017112][]call_cpuidle+0x6c/0x74
[3602.017598][]cpu_startup_entry+0x2ac/0x2bc
[3602.018128][]secondary_start_kernel+0x190/0x1bc
[3602.018700][<00000000010f8188>]0x10f8188

触发 Crashdump

root@firefly:~#echoc>/proc/sysrq-trigger
[3635.905960]sysrq:SysRq:Triggeracrash
[3635.906476]UnabletohandlekernelNULLpointerdereferenceatvirtualaddress00000000
[3635.907201]pgd=ffffffc0d4a3e000
[3635.907640][00000000]*pgd=0000000000000000,*pud=0000000000000000
[3635.908305]Internalerror:Oops:96000045[#1]SMP
..............................................................
[3648.331820]Exceptionstack(0xffffffc0cd8cbb30to0xffffffc0cd8cbc60)
[3648.332405]bb20:ffffff800967ff680000008000000000
[3648.333108]bb40:ffffffc0cd8cbd00ffffff80085bb538000000000000000f0000000000000000
[3648.333811]bb60:ffffff80097f72f80000000000000002ffffffc0cd8cbb90000000030003c018
[3648.334514]bb80:00000000000000c30000000100000000ffffffc0cd8cbc30ffffff800810d674
[3648.335218]bba0:ffffffc0cd8cbc90ffffff80092b55d1ffffff80095fa0000000000000000006
[3648.335921]bbc0:0000000000000063000000000000000000000000000000010000000000000000
[3648.336623]bbe0:ffffffc0f7ee8320000000000000000000000000000000000000000000000000
[3648.337327]bc00:0000000000000010ffffff800965ead8ffffff80084783987f7f7f7f7f7f7f7f
[3648.338029]bc20:71277660716d73ff7f7f7f7f7f7f7f7f01010101010101010000000000000000
[3648.338733]bc40:0ffffffffffffffe0000000000000000ffffff80081e5cb80000007f8147b8c8
[3648.339434][]el1_da+0x24/0x8c
[3648.339873][]__handle_sysrq+0xa0/0x14c
[3648.340379][]write_sysrq_trigger+0x5c/0x74
[3648.340911][]proc_reg_write+0xa8/0xcc
[3648.341406][]__vfs_write+0x48/0xe8
[3648.341877][]vfs_write+0xa8/0x15c
[3648.342338][]SyS_write+0x5c/0xb0
[3648.342798][]el0_svc_naked+0x24/0x28

总结

SysRq 在处理系统挂起时安全重启方面已经比较完善了。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1372

    浏览量

    40276
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211574
  • 内存
    +关注

    关注

    8

    文章

    3019

    浏览量

    74003
  • 调试
    +关注

    关注

    7

    文章

    578

    浏览量

    33923

原文标题:【调试】sysRq键使用方法

文章出处:【微信号:嵌入式与Linux那些事,微信公众号:嵌入式与Linux那些事】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    flashpgm使用方法教程

    flashpgm使用方法教程上机操作指南一: 硬件安装按照下图连接好硬件设备二: 安装软件1: 装好ads1.2安装ADS1.21.1 解压缩开文件,运行ARM ADS1.2下
    发表于 03-26 21:29

    转:Keil的使用方法 - 常用功能(二)

    Ⅰ、概述 上一篇文章是总结关于Keil使用方法-常用功能(一),关于(文件和编译)工具栏每一个按钮的功能描述和快捷的使用。我将每一篇Keil使用方法的文章都汇总在一起,回顾前面的总结请点击下面
    发表于 06-13 10:42

    计算机基础知识截屏,电脑截屏技巧 截图快捷是什么 精选资料分享

    电脑截屏技巧 截图快捷是什么在我们日常使用电脑不管是工作还是娱乐都经常会使用到截图功能,下面我们来介绍使用截图快捷来实现快速截图的方法。目前我们比较常用的有3种截图快捷,分别是全
    发表于 09-08 07:17

    示波器的使用方法

    示波器的使用方法 1 示波器使用        本节介绍示波器的使用方法。示波器种类、型号很多,功能也不同。
    发表于 01-14 13:06 1.8w次阅读

    Matlab使用方法和程序设计

    Matlab使用方法和程序设计 实验一 Matlab使用方法和程序设计一、
    发表于 10-17 00:18 5392次阅读
    Matlab<b class='flag-5'>使用方法</b>和程序设计

    示波器的使用方法

    数字万用表使用方法和示波器的使用方法详解。
    发表于 03-14 10:38 32次下载

    Proteus常用快捷使用方法

    Proteus 常用快捷使用方法 1.proteus中怎样使用模板 file--〉new design:在弹出的对话框就可以选择模板了 file--〉save design
    发表于 09-07 20:13 7次下载

    xilinx 原语使用方法

    xilinx 原语使用方法
    发表于 10-17 08:57 11次下载
    xilinx 原语<b class='flag-5'>使用方法</b>

    ORCAD PSPICE 使用方法

    ORCAD PSPICE 使用方法
    发表于 10-18 14:52 39次下载
    ORCAD PSPICE <b class='flag-5'>使用方法</b>

    xilinx原语使用方法

    xilinx原语使用方法
    发表于 10-19 08:50 15次下载
    xilinx原语<b class='flag-5'>使用方法</b>

    git使用方法

    git使用方法
    发表于 10-24 09:45 19次下载
    git<b class='flag-5'>使用方法</b>

    示波器的使用方法(三):示波器的使用方法详解

    示波器的使用方法并非很难,重点在于正确使用示波器的使用方法。往期文章中,小编对模拟示波器的使用方法和数字示波器的使用方法均有所介绍。为增进大家对示波器的
    的头像 发表于 12-24 20:37 3256次阅读

    sysRq使用方法

    SysRq是一个魔术案件,只要在内核没有完全卡死的情况下,内核都会相应SysRq 的输入,使用这些组合都可以搜集包括系统内存使用、CP
    的头像 发表于 02-17 15:55 1473次阅读

    proc/sysrq-trigger节点用法

    /proc/sysrq-trigger 这个节点是最近调试稳定性的时候接触的,完整的内容可以参考内核目录下 /kernel-4.9/Documentation/sysrq.txt,这里只写出常用部分
    的头像 发表于 07-22 11:38 1597次阅读

    什么是SysRq 内核配置选项

    SysRqSysRq 被内核称为“ Magic SysRq key ”,即“ 神奇的系统请求 ”。 简单来说,就是可以 通过键盘的按键获取内核的信息 ,用于调试。相当于是一个
    的头像 发表于 09-26 16:42 769次阅读