Linux中的SysRq魔术键

Linux内核提供一种按键触发机制,能够在系统异常时,dump 出cpu寄存器,内存使用情况,系统进程堆栈,系统timer等等信息,

sysrq模块提供完整功能如下:

SysRq : HELP : loglevel(0-9) reBoot Crash terminate-all-tasks(E) memory-full-oom-kill(F) kill-all-tasks(I) thaw-filesystems(J) saK show-backtrace-all-active-cpus(L) show-memory-usage(M) nice-all-RT-tasks(N) powerOff show-registers(P) show-all-timers(Q) unRaw Sync show-task-states(T) Unmount show-blocked-tasks(W) dump-ftrace-buffer(Z)

 

1. 打开sysrq功能

代码路径: drivers/tty/sysrq.c

CONFIG_MAGIC_SYSRQ=y.

动态打开和关闭sysrq功能

echo 1 > /proc/sys/kernel/sysrq

 

2. sysrq功能使用

 2.1 uart /adb 输入指令

常用功能有:

echo 'm' > /proc/sysrq-trigger   : 打印系统内存使用情况

echo 'l' > /proc/sysrq-trigger : 打印系统所有CPU的寄存器和堆栈

echo 'q' > /proc/sysrq-trigger: 打印系统所有timer情况

echo 'wf > /proc/sysrq-trigger : 打印系统所有D状态进程堆栈

echo 'f' > /proc/sysrq-trigger :触发一次out of memory, 打印系统所有进程的adj值,并kill一个最优进程

2.2 代码中显示调用sysrq功能

 __handle_sysrq('m', false) : 打印系统内存使用情况

__handle_sysrq('w', false); :打印系统所有D状态进程堆栈

__handle_sysrq('l', false): 打印系统所有CPU的寄存器和堆栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值