如何使用sysrq及添加自己的sysrq
来源:互联网 发布:google拼音 linux 编辑:程序博客网 时间:2024/06/05 10:20
Sysrq是一组'魔术组合键',只要内核没有被完全锁住,不管内核在做什么事情,使用这些组合键可以立即打印出内核的信息。使用sysrq组合键是了解系统目前
运行情况的最好方式。如果系统出现挂起的情况或者在诊断一些和内核相关,比较怪异,比较难重现的问题的时候,使用sysrq键是一个比较好的方式。
在使用sysrq-trigger之前必须在内核中打开sysrq
CONFIG_MAGIC_SYSRQ=y
参看sysrq的值
#sysctl -a |grep sysrq
kernel.sysrq = 0
或者
#cat /proc/sys/kernel/sysrq
0
用sysctl修改sysrq的值
#sysctl -w kernel.sysrq=1 #修改内存中的内核参数
kernel.sysrq = 1
还可以用echo修改sysrq的值:
# echo 1 > /proc/sys/kernel/sysrq
关闭这个功能:
# echo 0 > /proc/sys/kernel/sysrq
看看sysrq-trigger的帮助信息
#echo -h> /proc/sysrq-trigger
#dmesg
SysRq : HELP : loglevel0-8 reBoot Crashdump tErm Full kIll saK showMem Nice powerOff showPc unRaw Sync showTasks Unmount shoWcpus
当我触发一个sysrq事件的时候,结果保存在什么地方?
当一个sysrq命令被触发,内核将会打印信息到内核的环形缓冲并输出到系统控制台。此信息一般也会通过syslog输出到/var/log/messages.
有时候,可能系统已经无法响应,syslogd可能无法记录此信息。在这种情况下,建议您配置一个串口终端来收集这个信息。
那些类型的sysrq事件可以被触发?
sysrq功能被打开后,有几种sysrq事件可以被触发。不同的内核版本可能会有些不同。但有一些是共用的:
* m - 导出关于内存分配的信息
* t - 导出线程状态信息
* p - 到处当前CPU寄存器信息和标志位的信息
* c - 故意让系统崩溃(在使用netdump或者diskdump的时候有用)
* s - 立即同步所有挂载的文件系统
* u - 立即重新挂载所有的文件系统为只读
* b - 立即重新启动系统
* o - 立即关机(如果机器配置并支持此项功能)
如何添加自己的sysrq.
#include <linux/sysrq.h>
static void read_xxx(void)
{
printk("call read_xxx\n");
}
static int loop_xxx = 0;
static void xxx_work_fn(struct work_struct *work);
static DECLARE_DELAYED_WORK(work_xxx, xxx_work_fn);
static void xxx_work_fn(struct work_struct *work)
{
read_xxx();
if (loop_xxx) {
schedule_delayed_work(&work_xxx, 200);
}
}
static void handle_xxx(int key)
{
schedule_delayed_work(&work_xxx, 200);
loop_xxx = !loop_xxx;
}
static struct sysrq_key_op sysrq_xxx_op = {
.handler = handle_xxx,
.help_msg = "xxx-fordebug(G)",
.action_msg = "XXX",
.enable_mask = SYSRQ_ENABLE_BOOT,
};
static int xxxxx_init(void)
{
register_sysrq_key('g', &sysrq_xxx_op);
printk("------------------------------- xxxxx_init -----------------\n");
return 0;
}
late_initcall(xxxxx_init);
- 如何使用sysrq及添加自己的sysrq
- sysrq-trigger的使用
- Sysrq
- sysrq
- 使用SysRq
- Linux中SysRq的使用
- 键盘的 SysRq按键使用详解
- 怎样使用sysrq
- SysRq使用详解
- 使用reboot命令失败的处理方法(/proc/sys/kernel/sysrq 和 /proc/sysrq-trigger )
- 使用 SysRq 查看系统信息
- 使用 SysRq 键安全重启挂起的 Linux
- sysrq.txt
- 在Fedora 14中使用SysRq键
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的强大功能
- /proc/sysrq-trigger文件的功能
- 如何实现一个下拉框为JTree的Combox
- BigWorld用到的第三方库
- 分类模型的性能评估——以SAS Logistic回归为例(2): ROC和AUC
- 编译hadoop2.0(0.23.0)及运行的一些问题
- hdu4031
- 如何使用sysrq及添加自己的sysrq
- WEB3-servlet
- poj 题目分类
- 【OpenCV】SIFT原理与源码分析:关键点搜索与定位
- java操作XML
- 划分树模板
- 高校俱乐部参会成员餐票领取安排及第二届研讨会邀请信
- 心得3--Servlet的一些细节
- 编辑框加上行号