sysrq是linux的一种调试手段,经常是因为系统挂死,但内核并没有完全死掉的情况下,通过对内核下发组合按键,从而拿到必要的内核信息。
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
root@ywen233:~# sysctl -a | grep sysrq kernel.sysrq = 176
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
通过alt+sysrq组合按键触发
通过echo /proc/sysrq-trigger触发
可触发类型
0-9 设定终端输出的内核 log 优先级 b 立即重启系统 c 内核live reboot,并输出错误信息 d 显示所有排它锁(显示所有被持有的锁) e 向除 init 外进程发送 SIGTERM 信号,让其自行结束 f 人为触发 OOM Killer (out of memory) g 当进入内核模式时,以 framebuttter 代替输出(kgdb(内核调试器)使用) h 输出帮助 i 向除 init 以外所有进程发送 SIGKILL 信号,强制结束进程 k 安全访问密钥(SAK)杀死当前虚拟控制台上的所有程序 l 显示所有活动cpu的堆栈回溯。 m 内存使用信息(将当前内存信息转储到您的控制台。) n 重置所有进程的 nice(优先级) o 关机 p 输出cpu 寄存器信息 q Display all active high-resolution timers and clock sources. r 把键盘设置为 ASCII 模式,使按键可以穿透 x server 捕捉传递给内核 s 同步缓冲区数据到硬盘 t 输出进程列表(将当前任务及其信息的列表转储到您的控制台。) u 重新挂载所有文件系统为只读模式 v 输出 Voyager SMP 处理信息 w 输出 block(d状态)进程列表