SysRq鍵簡介
SysRq鍵是一個魔術(shù)案件,只要在內(nèi)核沒有完全卡死的情況下,內(nèi)核都會相應(yīng)SysRq 鍵的輸入,使用這些組合鍵都可以搜集包括系統(tǒng)內(nèi)存使用、CPU任務(wù)處理、進程運行狀態(tài)等系統(tǒng)運行信息。
配置
內(nèi)核配置選項中要使能CONFIG_MAGIC_SYSRQ選項,這樣系統(tǒng)啟動之后,會生成/proc/sysrq-trigger節(jié)點用于調(diào)試。
修改/etc/sysctl.conf啟動SysRq。
kernel.sysrq=1
執(zhí)行下列命令,使修改生效。
sysctl-p
也可以通過寫echo "number" >/proc/sys/kernel/sysrq節(jié)點臨時使能sysrq功能。
寫入不同的值使能不同的功能:
值 | 描述/說明 |
---|---|
0 | 完全禁用 sysrq |
1 | 啟用 sysrq 的所有功能 |
2 | 允許控制終端日志級別 |
4 | 允許控制終端日志級別 |
8 | 允許調(diào)試進程dump |
16 | 允許執(zhí)行sync命令 |
32 | 允許重新掛載文件系統(tǒng)為之讀 |
64 | 允許發(fā)送信號給進程(term,kill,oom-kill) |
128 | 允許重啟/關(guān)機 |
256 | 允許調(diào)整實時任務(wù)的優(yōu)先級 |
如何使用SysRq
echo>/proc/sysrq-trigger
命令鍵
命令鍵 | 功能 |
---|---|
b | 將立即重啟系統(tǒng),不會同步或者卸載磁盤。 |
c | 將執(zhí)行系統(tǒng) crash,如果配置了系統(tǒng) crashdump,將執(zhí)行 crashdump。 |
d | 顯示所有持有的鎖。 |
e | 發(fā)送 SIGTERM 信號給所有進程,除了 init 進程。 |
f | 將調(diào)用 oom killer 殺掉一個過度占用內(nèi)存的進程,如果什么任務(wù)都沒殺, 也不會 panic。 |
g | kgdb 使用(內(nèi)核調(diào)試器)。 |
h | 將會顯示幫助。(實際上除了這里列舉的鍵,其他的都將顯示幫助, 但是 h 容易記住):-) |
i | 發(fā)送 SIGKILL 給所有進程,除了 init 進程。 |
j | 強制性的 “解凍它” - 用于被 FIFREEZE ioctl 操作凍住的文件系統(tǒng)。 |
k | 安全訪問秘鑰(SAK)殺掉在當(dāng)前虛擬控制臺的所有程序,注意:參考 下面 SAK 節(jié)重要論述。 |
l | 顯示所有活動 cpu 的棧回溯。 |
m | 將導(dǎo)出當(dāng)前內(nèi)存信息到你的控制臺。 |
n | 用于使所有實時任務(wù)變成普通任務(wù)。 |
o | 將關(guān)閉系統(tǒng)(如果配置和支持的話)。 |
p | 將導(dǎo)出當(dāng)前寄存器和標(biāo)志位到控制臺。 |
q | 將導(dǎo)出每個 cpu 上所有已裝備的高精度定時器(不是完整的 time_list 文件顯示的 timers)和所有時鐘事件設(shè)備的詳細信息。 |
r | 關(guān)閉鍵盤的原始模式,設(shè)置為轉(zhuǎn)換模式。 |
s | 將嘗試同步所有的已掛載文件系統(tǒng)。 |
t | 將導(dǎo)出當(dāng)前所有任務(wù)列表和它們的信息到控制臺。 |
u | 將嘗試重新掛載已掛載文件系統(tǒng)為只讀。 |
v | 強制恢復(fù)幀緩存控制臺。 |
v | 觸發(fā) ETM 緩存導(dǎo)出 [ARM 架構(gòu)特有] |
w | 導(dǎo)出處于不可中斷狀態(tài)(阻塞)的任務(wù)。 |
x | 在 ppc/powerpc 架構(gòu)上用于 xmon 接口。在 sparc64 架構(gòu)上用于顯示全局的 PMU(性能監(jiān)控單元)寄存器。在 MIPS 架構(gòu)上導(dǎo)出所有的 tlb 條目。 |
y | 顯示全局 cpu 寄存器 [SPARC-64 架構(gòu)特有] |
z | 導(dǎo)出 ftrace 緩存信息 |
0-9 | 設(shè)置控制臺日志級別,該級別控制什么樣的內(nèi)核信息將被打印到你的 控制臺。(比如 0 ,將使得只有緊急信息,像 PANICs or OOPSes 才能到你的控制臺。) |
打印內(nèi)存使用信息
root@firefly:~#echom>/proc/sysrq-trigger [3100.196187]sysrq:SysRq:ShowMemory [3100.196675]Mem-Info: [3100.196931]active_anon:48062inactive_anon:2987isolated_anon:0 [3100.196931]active_file:40449inactive_file:53540isolated_file:0 [3100.196931]unevictable:0dirty:22writeback:0unstable:0 [3100.196931]slab_reclaimable:10518slab_unreclaimable:6599 [3100.196931]mapped:44843shmem:3710pagetables:1568bounce:0 [3100.196931]free:810482free_pcp:497free_cma:0 [3100.199998]DMAfree:3241928kBmin:7920kBlow:9900kBhigh:11880kBactive_anon:192248kBinactive_anon:11948kBactive_file:161796kBinactive_file:214160kBunevictable:0kBisolated(anon):0kBisolated(file):0kBpresent:4030464kBmanaged:3933592kBmlocked:0kBdirty:88kBwriteback:0kBmapped:179372kBshmem:14840kBslab_reclaimable:42072kBslab_unreclaimable:26396kBkernel_stack:5792kBpagetables:6272kBunstable:0kBbounce:0kBfree_pcp:1988kBlocal_pcp:224kBfree_cma:0kBwriteback_tmp:0kBpages_scanned:0all_unreclaimable?no [3100.204031]lowmem_reserve[]:000 [3100.204414]DMA:272*4kB(U)95*8kB(UM)177*16kB(UME)88*32kB(UME)50*64kB(UM)32*128kB(UM)6*256kB(UM)4*512kB(UM)2*1024kB(M)3*2048kB(UME)785*4096kB(M)=3241928kB [3100.206208]Node0hugepages_total=0hugepages_free=0hugepages_surp=0hugepages_size=2048kB [3100.206990]97710totalpagecachepages [3100.207345]0pagesinswapcache [3100.207679]Swapcachestats:add0,delete0,find0/0 [3100.208156]Freeswap=0kB [3100.208425]Totalswap=0kB [3100.208721]1007616pagesRAM [3100.209003]0pagesHighMem/MovableOnly [3100.209352]24218pagesreserved root@firefly:~#
打印進程列表
root@firefly:~#echot>/proc/sysrq-trigger [3357.426399]sysrq:SysRq:ShowState [3357.426902]Calltrace: [3357.427155][]__switch_to+0x94/0xbc [3357.427759][ ]__schedule+0x334/0x65c [3357.428249][ ]schedule+0x70/0x84 [3357.428762][ ]schedule_hrtimeout_range_clock+0x54/0xd8 [3357.429390][ ]schedule_hrtimeout_range+0x38/0x48 [3357.430004][ ]SyS_epoll_wait+0x2c0/0x334 [3357.430515][ ]SyS_epoll_pwait+0xb4/0x104 [3357.431057][ ]el0_svc_naked+0x24/0x28 [3357.431576]Calltrace: [3359.224688]runnabletasks: [3359.224688]taskPIDtree-keyswitchespriowait-timesum-execsum-sleep [3359.224688]---------------------------------------------------------------------------------------------------------- [3359.226942]watchdog/531-8.99037584200.01041833.6399740.011083/ [3359.227935]migration/5320.0000001100.0064170.7036260.011083/ ............................... [3359.280491]rsyslogd62012549.402602311203.95971013.0672493000146.370846/ [3359.281483]gmain6492780.83708041201.4978750.23479142.333083/ [3359.282473]gdbus6536084.55846323512011.84550588.1433775894.875470/ [3359.283464]probing-thread6572798.85165811200.1712090.0463750.000000/ [3359.284458]gmain66613129.7470178421201.635792160.937875............................... [3359.347891]kbase_event10875737.99119021000.0000000.0154160.022167/ [3359.348888]kworker/5:0141512729.712418635212094.661328379.266952300531.917073/ [3359.349880]kworker/5:1142113139.623478459212040.804756269.058278218093.165092/ [3359.350919]
打印 CPU 信息
root@firefly:~#echow>/proc/sysrq-trigger [3461.098259]sysrq:SysRq:ShowBlockedState [3461.099495]SchedDebugVersion:v0.11,4.4.194+#15 [3461.099987]ktime:3460974.551474 [3461.100559]sched_clk:3461099.486338 [3461.101163]cpu_clk:3461099.486629 [3461.101733]jiffies:4298128273 [3461.102303] [3461.102457]sysctl_sched ............................... [3461.106084] [3461.476753]taskPIDtree-keyswitchespriowait-timesum-execsum-sleep [3461.476753]---------------------------------------------------------------------------------------------------------- [3461.479007]watchdog/531-8.99037586800.01041834.6398090.011083/ [3461.479999]migration/5320.0000001100.0064170.7036260.011083/ [3461.480990]ksoftirqd/53312976.65500228212031.2629109.5779263226896.156313/ .................... [3461.598951]gdbus9815621.0432456312010.4294157.925751240.024166/ [3461.599945]kbase_event10875737.99119021000.0000000.0154160.022167/ [3461.600943]kworker/5:1142113242.484431632412056.331917371.919231300578.331580/ [3461.601934]kworker/5:0142413267.1288014161203.93226125.07966219671.560460/ [3461.602964]
顯示所有活動 cpu 的棧回溯
root@firefly:~#echol>/proc/sysrq-trigger [3602.003162]sysrq:SysRq:ShowbacktraceofallactiveCPUs [3602.003919]Calltrace: [3602.004175][]dump_backtrace+0x0/0x220 root@firefly:~#[3602.004675][ ]show_stack+0x24/0x30 [3602.005233][ ]showacpu+0x68/0x84 [3602.005688][ ]flush_smp_call_function_queue+0x84/0x134 [3602.006303][ ]generic_smp_call_function_single_interrupt+0x18/0x20 [3602.007007][ ]handle_IPI+0x19c/0x260 [3602.007490][ ]gic_handle_irq+0x12c/0x184 [3602.007995]Exceptionstack(0xffffffc0f2f1fd90to0xffffffc0f2f1fec0) [3602.008580]fd80:00000000000000000000000000000003 [3602.009284]fda0:00000040ee976000000000000000002000ffffffffffffff0000001425865f85 [3602.009988]fdc0:000000000004b382000000000000000300000032b5593519ffffff8008081800 [3602.010691]fde0:000000000000100000000000000000000000000034d5d91d00000040ee976000 [3602.011394]fe00:ffffffc0f2f0a880000000000000000000000000000000000000000000000000 [3602.012098]fe20:0000000030d0080000000346a09ab4640000000000000002ffffffc00a4bac00 [3602.012801]fe40:ffffff80097ace1800000000000000010000034697fd8dddffffff800974e488 [3602.013504]fe60:0000000001ab400000000000010f82440000000000000000ffffffc0f2f1fec0 [3602.014209]fe80:ffffff8008b9eb10ffffffc0f2f1fec0ffffff8008b9eb140000000060000145 [3602.014912]fea0:ffffffc0f2f1fec0ffffff8008b9eb10ffffffffffffffff0000000000000002 [3602.015615][ ]el1_irq+0xb4/0x140 [3602.016070][ ]cpuidle_enter_state+0x1cc/0x25c [3602.016624][ ]cpuidle_enter+0x34/0x44 [3602.017112][ ]call_cpuidle+0x6c/0x74 [3602.017598][ ]cpu_startup_entry+0x2ac/0x2bc [3602.018128][ ]secondary_start_kernel+0x190/0x1bc [3602.018700][<00000000010f8188>]0x10f8188
觸發(fā) Crashdump
root@firefly:~#echoc>/proc/sysrq-trigger [3635.905960]sysrq:SysRq:Triggeracrash [3635.906476]UnabletohandlekernelNULLpointerdereferenceatvirtualaddress00000000 [3635.907201]pgd=ffffffc0d4a3e000 [3635.907640][00000000]*pgd=0000000000000000,*pud=0000000000000000 [3635.908305]Internalerror:Oops:96000045[#1]SMP .............................................................. [3648.331820]Exceptionstack(0xffffffc0cd8cbb30to0xffffffc0cd8cbc60) [3648.332405]bb20:ffffff800967ff680000008000000000 [3648.333108]bb40:ffffffc0cd8cbd00ffffff80085bb538000000000000000f0000000000000000 [3648.333811]bb60:ffffff80097f72f80000000000000002ffffffc0cd8cbb90000000030003c018 [3648.334514]bb80:00000000000000c30000000100000000ffffffc0cd8cbc30ffffff800810d674 [3648.335218]bba0:ffffffc0cd8cbc90ffffff80092b55d1ffffff80095fa0000000000000000006 [3648.335921]bbc0:0000000000000063000000000000000000000000000000010000000000000000 [3648.336623]bbe0:ffffffc0f7ee8320000000000000000000000000000000000000000000000000 [3648.337327]bc00:0000000000000010ffffff800965ead8ffffff80084783987f7f7f7f7f7f7f7f [3648.338029]bc20:71277660716d73ff7f7f7f7f7f7f7f7f01010101010101010000000000000000 [3648.338733]bc40:0ffffffffffffffe0000000000000000ffffff80081e5cb80000007f8147b8c8 [3648.339434][]el1_da+0x24/0x8c [3648.339873][ ]__handle_sysrq+0xa0/0x14c [3648.340379][ ]write_sysrq_trigger+0x5c/0x74 [3648.340911][ ]proc_reg_write+0xa8/0xcc [3648.341406][ ]__vfs_write+0x48/0xe8 [3648.341877][ ]vfs_write+0xa8/0x15c [3648.342338][ ]SyS_write+0x5c/0xb0 [3648.342798][ ]el0_svc_naked+0x24/0x28
總結(jié)
SysRq 在處理系統(tǒng)掛起時安全重啟方面已經(jīng)比較完善了。
審核編輯:湯梓紅
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1363瀏覽量
40228 -
cpu
+關(guān)注
關(guān)注
68文章
10825瀏覽量
211151 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3002瀏覽量
73885 -
調(diào)試
+關(guān)注
關(guān)注
7文章
572瀏覽量
33898
原文標(biāo)題:【調(diào)試】sysRq鍵使用方法
文章出處:【微信號:嵌入式與Linux那些事,微信公眾號:嵌入式與Linux那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論