/proc/sysrq-trigger 这个节点是最近调试稳定性的时候接触的,完整的内容可以参考内核目录下 /kernel-4.9/Documentation/sysrq.txt,这里只写出常用部分。
用该功能必须将内核中的 CONFIG_MAGIC_SYSRQ 配置选项打开,但一般的发行版本都将此选项关闭了,该功能主要是用于调试的,想体验该功能的重新配置下内核。
echo b > /proc/sysrq-trigger
立即重启机器,而且不会将缓冲区同步到硬盘,也不会卸载已挂载的硬盘
echo c > /proc/sysrq-trigger
使系统崩溃,如果配置了crashdump,崩溃后会生成 dump 文件
echo d > /proc/sysrq-trigger
列出系统中所有被持有的锁
echo e > /proc/sysrq-trigger
向系统中除 init 外的所有进程发出 SIGTERM 信号
echo f > /proc/sysrq-trigger
调用 oom_kill 杀死内存的 hog 进程
echo g > /proc/sysrq-trigger
kgdb 会使用该项
echo h > /proc/sysrq-trigger
显示帮助信息
echo i > /proc/sysrq-trigger
向系统中除 init 外的所有进程发出 SIGKILL 信号
echo j > /proc/sysrq-trigger
Forcibly "Just thaw it" - filesystems frozen by the FIFREEZE ioctl
echo k > /proc/sysrq-trigger
Secure Access Key (SAK) Kills all programs on the current virtual console. NOTE: See important comments below in SAK section.
echo l > /proc/sysrq-trigger
显示现在所有活动 cpu 的堆栈
echo m > /proc/sysrq-trigger
将当前内存信息 dump 到终端
echo n > /proc/sysrq-trigger
用来使实时任务可以设置 nice 值
echo o > /proc/sysrq-trigger
关闭系统
echo p > /proc/sysrq-trigger
将寄存器和 flags dump 到终端
echo q > /proc/sysrq-trigger
Will dump per CPU lists of all armed hrtimers (but NOT regular timer_list timers) and detailed information about all clockevent devices
echo r > /proc/sysrq-trigger
Turns off keyboard raw mode and sets it to XLATE。
echo s > /proc/sysrq-trigger
将尝试同步所有已挂载的文件系统
echo u > /proc/sysrq-trigger
将当前任务的列表和他们信息输出到终端
echo v > /proc/sysrq-trigger
强制恢复 framebuffer console
echo w > /proc/sysrq-trigger
将进入 uninterrupted 状态的任务信息 dump 出来
echo x > /proc/sysrq-trigger
Used by xmon interface on ppc/powerpc platforms
echo y > /proc/sysrq-trigger
Show global CPU Registers [SPARC-64 specific]
echo z > /proc/sysrq-trigger
Dump the ftrace buffer
echo '0'-'9' > /proc/sysrq-trigger
Sets the console log level, controlling which kernel messages will be printed to your console. ('0', for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)
/kernel-5.18/drivers/tty/sysrq.c
static const struct sysrq_key_op *sysrq_key_table[62] = {
&sysrq_loglevel_op, /* 0 */
&sysrq_loglevel_op, /* 1 */
&sysrq_loglevel_op, /* 2 */
&sysrq_loglevel_op, /* 3 */
&sysrq_loglevel_op, /* 4 */
&sysrq_loglevel_op, /* 5 */
&sysrq_loglevel_op, /* 6 */
&sysrq_loglevel_op, /* 7 */
&sysrq_loglevel_op, /* 8 */
&sysrq_loglevel_op, /* 9 */
/*
* a: Don't use for system provided sysrqs, it is handled specially on
* sparc and will never arrive.
*/
NULL, /* a */
&sysrq_reboot_op, /* b */
&sysrq_crash_op, /* c */
&sysrq_showlocks_op, /* d */
&sysrq_term_op, /* e */
&sysrq_moom_op, /* f */
/* g: May be registered for the kernel debugger */
NULL, /* g */
NULL, /* h - reserved for help */
&sysrq_kill_op, /* i */
#ifdef CONFIG_BLOCK
&sysrq_thaw_op, /* j */
#else
NULL, /* j */
#endif
&sysrq_SAK_op, /* k */
#ifdef CONFIG_SMP
&sysrq_showallcpus_op, /* l */
#else
NULL, /* l */
#endif
&sysrq_showmem_op, /* m */
&sysrq_unrt_op, /* n */
/* o: This will often be registered as 'Off' at init time */
NULL, /* o */
&sysrq_showregs_op, /* p */
&sysrq_show_timers_op, /* q */
&sysrq_unraw_op, /* r */
&sysrq_sync_op, /* s */
&sysrq_showstate_op, /* t */
&sysrq_mountro_op, /* u */
/* v: May be registered for frame buffer console restore */
NULL, /* v */
&sysrq_showstate_blocked_op, /* w */
/* x: May be registered on mips for TLB dump */
/* x: May be registered on ppc/powerpc for xmon */
/* x: May be registered on sparc64 for global PMU dump */
NULL, /* x */
/* y: May be registered on sparc64 for global register dump */
NULL, /* y */
&sysrq_ftrace_dump_op, /* z */
NULL, /* A */
NULL, /* B */
NULL, /* C */
NULL, /* D */
NULL, /* E */
NULL, /* F */
NULL, /* G */
NULL, /* H */
NULL, /* I */
NULL, /* J */
NULL, /* K */
NULL, /* L */
NULL, /* M */
NULL, /* N */
NULL, /* O */
NULL, /* P */
NULL, /* Q */
NULL, /* R */
NULL, /* S */
NULL, /* T */
NULL, /* U */
NULL, /* V */
NULL, /* W */
NULL, /* X */
NULL, /* Y */
NULL, /* Z */
}
本文分享自 嵌入式Linux系统开发 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!