[转帖]linux下/proc/sysrq-trigger详解

linux,proc,sysrq,trigger,详解 · 浏览次数 : 0

小编点评

**打开和关闭SysRq组合键** * 在红帽企业版Linux里面,默认SysRq组合键是关闭的。 * 打开这个功能,运行:`echo 1 > /proc/sys/kernel/sysrq` * 关闭这个功能:`echo 0 > /proc/sys/kernel/sysrq` * 在/etc/sysctl.conf里面设置`kernel.sysrq`的值为1。重新启动以后,此功能将会自动打开。 **触发一个sysrq事件** * 在带有AT键盘的一般系统上,在终端上输入一下组合键: `Alt+PrintScreen+[CommandKey]` * 在串口终端上,要想获得同样的效果,需要先在终端上发送Break信号,然后在5秒内输入sysrq组合键。 **导出内存分配的信息** * 当一个sysrq命令被触发,内核将会打印信息到内核的环形缓冲并输出到系统控制台。 * 此信息一般也会通过syslog输出到/var/log/messages。

正文

/proc/sysrq-trigger详解

这是一组“魔术组合键”,只要内核没有被完全锁住,不管内核在做什么事情,使用这些组合键能即时打印出内核的信息。

使用SysRq组合键是了解系统目前运行情况的最佳方式。如果系统出现挂起的情况或在诊断一些和内核相关,比较怪异,比较难重现的问题的时候,使用SysRq键是个比较好的方式。

怎么打开和关闭SysRq组合键?

为了安全起见,在红帽企业版Linux里面,默认SysRq组合键是关闭的。 打开这个功能,运行:

echo 1 > /proc/sys/kernel/sysrq

关闭这个功能:

echo 0 > /proc/sys/kernel/sysrq

如果想让此功能一直生效,在/etc/sysctl.conf里面设置kernel.sysrq的值为1。重新启动以后,此功能将会自动打开。

kernel.sysrq = 1

因为打开sysrq键的功能以后,有终端访问权限的用户将会拥有一些特别的功能。因此,除非是要调试,解决问题,一般情况下,不要打开此功能。如果一定要打开,请确保你的终端访问的安全性。

 

怎么触发一个sysrq事件?

有几种方式能触发sysrq事件。在带有AT键盘的一般系统上,在终端上输入一下组合键:

Alt+PrintScreen+[CommandKey]

例如,要让内核导出内存信息(CommandKey “m”),你应该同时按下Alt 和 Print Screen 键,然后按下 m 键。

提示:此组合键在Xwindows上是无法使用的。所以,你先要转换到文本虚拟终端下。如果你当前是在图像界面,

能按Ctrl+Alt+F1转换到虚拟终端。

在串口终端上,要想获得同样的效果,需要先在终端上发送Break信号,然后在5秒内输入sysrq组合键。

如果你在机器上有root权限,你能把commandkey字符写入到/proc/sysrq-trigger文件。这能帮助你通过脚本或你不在系统终端上的时候触发sysrq事件。

echo ‘m’ > /proc/sysrq-trigger

当我触发一个sysrq事件的时候,结果保存在什么地方?

当一个sysrq命令被触发,内核将会打印信息到内核的环形缓冲并输出到系统控制台。此信息一般也会通过syslog输出到/var/log/messages。

有时候,可能系统已无法响应,syslogd可能无法记录此信息。在这种情况下,建议你设置一个串口终端来收集这个信息。

那些类型的sysrq事件能被触发?

sysrq功能被打开后,有几种sysrq事件能被触发。不同的内核版本可能会有些不同。但有一些是共用的:

  • m - 导出关于内存分配的信息,

  • t - 导出线程状态信息,

  • p - 导出当前CPU寄存器信息和标志位的信息,

  • c - 故意让系统崩溃(在使用netdump或diskdump的时候有用),

  • s - 即时同步所有挂载的文件系统,

  • u - 即时重新挂载所有的文件系统为只读,

  • b - 即时重新启动系统,

  • o - 即时关机(如果机器设置并支持此项功能)。

立即重新启动计算机
echo “b” > /proc/sysrq-trigger

立即关闭计算机
echo “o” > /proc/sysrq-trigger

导出内存分配的信息 (可以用/var/log/message 查看)
echo “m” > /proc/sysrq-trigger

导出当前CPU寄存器信息和标志位的信息
echo “p” > /proc/sysrq-trigger

导出线程状态信息
echo “t” > /proc/sysrq-trigger

故意让系统崩溃
echo “c” > /proc/sysrq-trigger

立即重新挂载所有的文件系统
echo “s” > /proc/sysrq-trigger

立即重新挂载所有的文件系统为只读
echo “u” > /proc/sysrq-trigger

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux30420 人正在系统学习中

与[转帖]linux下/proc/sysrq-trigger详解相似的内容:

[转帖]linux下/proc/sysrq-trigger详解

/proc/sysrq-trigger详解 这是一组“魔术组合键”,只要内核没有被完全锁住,不管内核在做什么事情,使用这些组合键能即时打印出内核的信息。 使用SysRq组合键是了解系统目前运行情况的最佳方式。如果系统出现挂起的情况或在诊断一些和内核相关,比较怪异,比较难重现的问题的时候,使用SysR

[转帖]Linux下查看网络流量常用方法

(1)使用ifconfig查看网络流量 RX是接收流量,TX是发送流量。 (2)使用watch more /proc/net/dev查看网卡流量,默认是以字节显示 watch使用命令: (3)iftop 下载地址:http://www.tcpdump.org/release/libpcap-0.8.

[转帖]Linux下清理内存和Cache方法见下文:

https://www.cnblogs.com/the-tops/p/8798630.html 暂时目前的环境处理方法比较简单: 在root用户下添加计划任务: */10 * * * * sync;echo 3 > /proc/sys/vm/drop_caches; 每十分钟执行一次,先将脏数据写回

[转帖]Linux内核 TCP/IP、Socket参数调优

文章系转载,便于整理和分类,原文地址:http://www.360doc.com/content/14/0606/16/3300331_384326124.shtml Doc1: /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sy

[转帖]dmidecode详解

跟硬件相关的命令有uname, lspci,/proc目录下的文件等,有时候Linux/Unix系统下获取有关硬件方面的信息,这个时候,就要用到dmidecode, 使用该命令可以查询BIOS、系统、主板、处理器、内存、缓存等非常重要信息。下面是其常用的几个命令: # dmidecode | gre

[转帖]linux下 安装了中文版本的,造成sqlplus 连接时出现了乱码

https://blog.51cto.com/u_11529070/3607380 linux下 安装了中文版本的,造成sqlplus 连接时出现了乱码 如图 一开始以为是LANG 变量的问题 后来发现是NLS_LANG的问题 解决方法: export NLS_LANG="AMERICAN_AMER

[转帖]Linux下Shell的for循环语句 第一类:数字性循环

#!/bin/bash for((i=1;i<=10;i++)); do echo $(expr $i \* 3 + 1); done #!/bin/bash for i in $(seq 1 10) do echo $(expr $i \* 3 + 1); done #!/bin/bash for

[转帖]linux下性能测试工具netperf使用

https://www.shuzhiduo.com/A/MyJxX2VpJn/ 一、功能简介 netperf是一款针对网络性能的测试工具,主要基于TCP或UDP的传输。根据应用的不同,可以进行批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式的

[转帖]Linux下用dd命令测试硬盘的读写速度

一、测试写速度: time dd if=/dev/zero of=/tmp/test bs=8k count=1000000 测试结果:565 MB/s 二、测试读速度: time dd if=/tmp/test of=/dev/null bs=8k 测试结果:4.7GB/s 三、测试读写速度: t

[转帖]Linux下 查看 每个进程占用的网络带宽 - NetHogs

https://www.cnblogs.com/xuyaowen/p/NetHogs.html 今天在服务器上进行测试程序,发现网速占用比较大,但不是我的程序。可能是其他同学在下载或者上传数据,所以需要看到底是哪个进程。 这时候使用 iftop, vnstat 等命令不能看出具体是哪个进程占用,因为