了解sysrq-trigger

sysrq是Linux系统中的一种调试工具,通过向/proc/sysrq-trigger写入特定字符,可以触发各种系统操作,如导出内存信息、查看任务状态、强制重启等。例如,'echo m > /proc/sysrq-trigger'会转储内存信息,'echo c > /proc/sysrq-trigger'则会导致内核重启。sysrq键为开发者和管理员提供了便利的内核调试和故障排查手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

了解下sysrq-trigger,便于观察内核调试信息和debug。

echo m > /proc/sysrq-trigger 导出内存分配信息
echo t > /proc/sysrq-trigger 导出当前任务状态信息
echo c > /proc/sysrq-trigger 产生空指针panic事件,人为导致系统崩溃

echo p > /proc/sysrq-trigger 导出当前CPU寄存器和标志位信息
echo s > /proc/sysrq-trigger 即时同步所有挂载的文件系统
echo u > /proc/sysrq-trigger 即时重新挂载所有的文件系统为只读
echo w > /proc/sysrq-trigger 转储处于uninterruptable阻塞状态的任务

echo b > /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状态)进程列表

参考:【开发工具】【sysrq】魔术键(sysRq)的使用_Evan_ZGYF丶的博客-优快云博客_魔术键在使用 

-time is 2024-01-03_12-56-36 -reboot reg is 2080 -reset mode is d -reason is kernel_crash -elfhdr_size is 0 -mem_num is 4 -crash_key is 0 -dump_mem_paddr is 0x9f146130 -board_arch is arm64 Vmcoreinfo: [kimage_voffset]: 0xffffffbf88000000 [phys_offset]: 0x80000000 [kaslr_offset]: 0x80000 [vabits_actual]: 39 linux memory 1: 0x80000000-0x17ffff000 sprd dump memory 1: 0x80000000-0xbfffffff sprd dump memory 2: 0xc0000000-0xffffffff sprd dump memory 3: 0x100000000-0x13fffffff sprd dump memory 4: 0x140000000-0x17fffefff =========== [exception_time: 2024-01-03_12-56-36] =========== [exception_serialno]: [exception_kernel_version]: Linux version 5.15.149-android13-8-00008-gbe074b05e5af-ab12096863 (build-user@build-host) (Android (8508608, based on r450784e) clang version 14.0.7 (https://android.googlesource.com/toolchain/llvm-project 4c603efb0cca074e9238af8b4106c30add4418f6), LLD 14.0.7) #1 SMP PREEMPT Tue Jul 16 15:36:08 UTC 2024 [exception_reboot_reason]: kernel_crash [exception_panic_reason]: sysrq triggered crash [exception_time]: 2024-01-03_12-56-36 [exception_file_info]: not-bugon [exception_task_id]: 8261 [exception_task_family]: [sh, 8261][modem_control, 888] [exception_pc_symbol]: [<ffffffc001809434>] sysdump_panic_event+0x218/0x8ec [sysdump] [exception_stack_info]: [<ffffffc001806994>] get_exception_stack_info+0x150/0x2d8 [sysdump] [<ffffffc0018067ec>] prepare_exception_info+0x16c/0x1c4 [sysdump] [<ffffffc001809988>] sysdump_panic_event+0x76c/0x8ec [sysdump] [<ffffffc0082044fc>] atomic_notifier_call_chain+0x8c/0x138 [<ffffffc0081b4d64>] panic+0x1b8/0x44c [<ffffffc008bea13c>] rcu_read_unlock.39331+0x0/0x54 [<ffffffc008be9484>] __handle_sysrq+0x124/0x25c [<ffffffc008bead70>] write_sysrq_trigger+0x11c/0x198 [<ffffffc0086c33d0>] proc_reg_write+0x100/0x200 [<ffffffc0085c6ea4>] vfs_write+0x170/0x40c [<ffffffc0085c6cc0>] ksys_write+0x7c/0xf0 [<ffffffc0085c6c34>] __arm64_sys_write+0x20/0x30 [<ffffffc00811fb68>] invoke_syscall+0x60/0x150 [<ffffffc00811fac8>] el0_svc_common+0xb8/0xf8 [<ffffffc00811f9a0>] do_el0_svc+0x28/0x98 [<ffffffc00977d248>] el0_svc+0x24/0x84 [<ffffffc00977d1c0>] el0t_64_sync_handler+0x88/0xec [<ffffffc00809164c>] el0t_64_sync+0x1b8/0x1bc
03-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值