Linux sysrq解读
原始文件在Linux内核源码Documentation/admin-guide/sysrq.rst。
如何使能SysRq
首先需要内核的配置选项中设置了CONFIG_MAGIC_SYSRQ,其次在/proc/sys/kernel/sysrq文件中控制了sysrq按键的使能功能,/proc/sys/kernel/sysrq文件默认被设置为1,这是通过内核的编译选项CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE进行设置的。下面是/proc/sys/kernel/sysrq能够设置的一些值的含义:
0:禁用所有的sysrq功能
1:使用所有的sysrq功能
>1:根据每个bit位表示不同的功能:
2 = 0x2 允许控制console日志的级别
4 = 0x4 允许控制键盘输入类型
8 = 0x8 允许调试程度dump
16=0x10 允许sync命令
32=0x20 允许文件系统重新挂载为只读模式
64=0x40 允许给进程发送信号(term,kill,oom-kill)
128=0x80 允许重启和关机
256=0x100 允许调整实时任务的优先级
上述指令可以进行组合,可以以二进制或者十进制的方式输入到/proc/sys/kernel/sysrq文件中。
注意:/proc/sys/kernel/sysrq只会影响键盘的按键,对写入/proc/sysrq-trigger的功能没有影响,/proc/sysrq-trigger的功能在拥有admin权限的时候始终都是允许的。
如何使用sysrq功能
使用alt+sysrq+key的方式,sysrq是键盘上的print screen按键,key就是对应的功能按键,下面是一些功能按键指代的功能:
日志级别控制功能
0-9:控制console level的级别
类重启功能
b:不进行同步和文件系统的卸载,直接重启系统
e:向除了init进程外的所有进程发送SIGTERM信号
k:发送kill到当前console的所有进程
i:向除了init进程的所有进程发送SIGKILL信号
f:触发oom_kill
信息显示类
h:输出sysrq的帮助信息
m:输出内存信息
w:打印cpu寄存器的上下文和程序调用栈的信息
p:打印CPU寄存器的信息
t:打印进程列表
o:关闭系统
d:显示所有的锁(需要内核配置CONFIG_LOCKDEP)
其他
c:使系统立刻崩溃,会产生crashdump
g:进入kdb模式
其他更多的功能可以参考sysrq.rst文件。