SysRq魔法键的使用

1.SysRq简介
它能够在系统处于极端环境时响应按键并完成相应的处理。这在大多数时候有用。SysRq 经常被称为 Magic System Request,它被
定义为一系列按键组合。之所以说它神奇,是因为它在系统挂起,大多数服务已无法响应的情况下,还能通过按键组合来完成一系列
预先定义的系统操作。

通过它,不但可以在保证磁盘数据安全的情况下重启一台挂起的服务器,避免数据丢失和重启后长时间的文件系统检查,还可以收集
包括系统内存使用,CPU 任务处理,进程运行状态等系统运行信息,甚至还可能在无需重启的情况下挽回一台已经停止响应的服务器。
到目前为止,我们可见到的大多数 SysRq 推荐用法都是系统挂起后的安全重启,用此方法来避免数据丢失。

在下文中,为描述的简洁,SysRq-<?> 均代表 Alt-SysRq-<?> 或者 echo “?” > /proc/sysrq-trigger。
同时按下Alt和Print Screen键以及相应的字母键发送命令:Ubuntu下,图形界面环境不能使用SysRq,需进入文本虚拟终端环境
(Ctrl+Alt+F1从图形桌面切换到虚拟终端,Alt+F7可切回来),

2.启用和关闭SysRq
首先要确保内核打开了CONFIG_MAGIC_SYSRQ配置项,这样SysRq的底层处理才可用。
暂时启用SysRq:echo "0" >/proc/sys/kernel/sysrq
暂时禁用SysRq:echo "1" >/proc/sys/kernel/sysrq

永久禁用SysRqs:在/etc/sysctl.conf中设置kernel.sysrq = 1
永久启用SysRqs:在/etc/sysctl.conf中设置kernel.sysrq = 0

3.安全重启系统
R-E-I-S-U-B 这个序列的推荐使用方式是:R – 1 秒 – E – 30 秒 – I – 10 秒 – S – 5 秒 – U – 5 秒 – B,而不是一气呵成地按
下这六个键,试想一次正常的 reboot 命令也不是在一瞬间完成的吧。

R - 把键盘设置为 ASCII 模式
E - 向除 init 以外所有进程发送 SIGTERM 信号
I - 向除 init 以外所有进程发送 SIGKILL 信号,与 E 类似,因为 syslogd 本身也被结束,除非 netconsole 或串口记录已打开,
否则连上面的信息都无法捕捉。同时,因为 SIGKILL 是不可捕获的信号,/var/log/messages 里面也不会留下任何线索。
S - 磁盘缓冲区同步,该操作会把磁盘缓冲区的数据回写,以防止数据丢失,通常会有一定延时。在能看到输出的情况下,请等到
” Emergency Sync complete ” 过后再继续后续操作。否则,等十秒钟左右,再进行后续 SysRq 操作。
U - 重新挂载为只读模式,该操作会把磁盘重挂载为只读模式,以防止数据的损坏。与 S 类似,该操作通常也有一定延时。请等到
” Emergency Remount complete ” 出现过后再进行后续操作,或者等候十秒钟再进行后续 SysRq 操作。
B - 立即重启系统,该操作会立即重启系统,比想象中要快。

4.结束进程
SysRq 定义了一组与结束进程相关的序列:E-I-K-F,可以用它们来恢复系统挂起。
E - 向所有进程发送 SIGTERM 信号
I - 向所有进程发送 SIGKILL 信号
K - 结束与当前控制台相关的全部进程,该操作结束了文本控制台下正在运行的 top 程序,以及登录的 shell 。
F - 人为触发 OOM Killer,OOM Killer 将根据各进程的内存处理情况选取最合适的“凶手”进程,并向其发送 SIGKILL 信号,中止其运行。
SysRq 输出包括运行栈,内存使用信息,和“凶手”进程的标识信息。在实际情况中,除非可以确认是内存使用问题,尽量避免使用这
个组合键。因为 OOM-Killer 自动挑选的进程不一定是真正的“凶手”。相比之下,SysRq-K 结束的进程更有针对性。

3.获取系统信息
M - 打印内存使用信息,该操作显示了 cpu 相关分区信息,全局页使用情况,分区页使用情况,分区 slab 使用情况,页缓存使用情况,
swap 使用情况等等。
P - 打印当前 CPU 寄存器信息,该操作显示了正在执行的进程名,运行函数,寄存器上下文,以及程序的调用栈回溯等信息。这对于分析
死锁引起的系统挂起有着非常重要的作用。一般来说我们会多采几次重复样本,以便更加准确的做出系统运行状态的判断!
T - 打印进程列表,该操作显示了进程列表,包含各进程的名称,进程 PID,父 PID 及兄弟 PID 等相关信息,以及进程的运行状态。
对于正在运行中的进程(R),没有太多的信息。对于处于睡眠状态的进程,列出其调用栈回溯信息,以便进行调试跟踪。
W - 打印 CPU 信息,该操作显示了每 CPU 的寄存器上下文和程序调用栈回溯信息。
H - 帮助,0--8 - 更改 console_loglevel,Alt-SysRq-6 的输出,它等同于 echo "6" > /proc/sys/kernel/printk 操作,
将console_loglevel 设置为 6 。
C - 触发 Crashdump在大多数情况下,我们通过前面的方法即可完成对系统挂起的基本诊断和数据收集。但是在一些特殊情况下,我们仍然
需要一份完整的 crashdump 。毕竟 crashdump 包含比 SysRq – MPT 更多的信息,以利用后期做故障分析。
N - 降低实时任务运行优化级,这对于由实时任务消耗 CPU 引起的系统挂起会起到立竿见影的作用。
O - 关机,该操作会立即关机,一般很少使用。在必要的情况下,也推荐跟随 S – U 一起使用。

参考:http://www.baidu.com/link?url=dDrEfDXtmLeBMPLtR-UF-ZGNhHwGkz0RRaOZkdqa9jBqVryPkHHv7quJqFBvJqeeEXZPQPvKCf8nDMOd-8mUjq&wd=&eqid=e5790bd10001a856000000065b17fe30

SysRq魔法键的使用的更多相关文章

  1. Linux中SysRq的使用(魔术键)

    转:http://www.chinaunix.net/old_jh/4/902287.html 魔术键:Linux Magic System Request Key Hacks 当Linux 系统不能 ...

  2. Sysrq 诊断系统故障 与 gdb 调试core dump

    1. 典型应用场景如:    1)系统进入了挂死状态(如调度出现异常.或系统负荷过重),但仍能响应中断,此时可以通过Sysrq魔术键(c)手工触发panic,结合kdump,就能收集到vmcore信息 ...

  3. /proc/sys/kernel/sysrq /proc/sysrq-trigger----强制重启/触发器

    LINUX远程强制重启/proc/sys/kernel/sysrq /proc/sysrq-trigger----触发器 ttp://blog.csdn.net/beckdon/article/det ...

  4. [Debug]驱动程序调测方法与技巧

    转自:http://blog.csdn.net/lichangc/article/details/43272457 驱动程序开发的一个重大难点就是不易调试.本文目的就是介绍驱动开发中常用的几种直接和间 ...

  5. Ubuntu死机解决方法汇总

    为什么不建议强制关机 如果长按电源按键强制关机,有可能损坏硬件或者丢失数据,甚至导致磁盘坏道! 其实, 大部分时候的死机是假死, 不是真死... 有时候鼠标还能动呢. 还有一个原因: 对于平时忠贞不二 ...

  6. ubuntu使用备忘

    今天在一个古董机子上(03年的)安装了lubuntu14.04,内存512M,奔腾处理器,好像是什么迅驰不支持linux需要的某项技术pae,安装时提示cpu不支持pae,但可以在内核参数中添加for ...

  7. linux配置文件的一些调优

    Linux中所有东西都是文件,一个socket就对应着一个文件描述符,因此系统配置的最大打开文件数以及单个进程能够打开的最大文件数就决定了socket的数目上限:但是linux是有文件句柄限制的,而且 ...

  8. sysctl.conf和limit.conf备忘待查

    #################################limits.conf设置################################### #修改最大进程和最大文件打开数限制v ...

  9. Deepin Linux系统的日常使用总结(日常施工)

    1.登录root权限用户 sudo su 2.安装软件语句 apt-get install <package_name> 相对的, 安装:apt-get install <packa ...

随机推荐

  1. 20170716xlVba销售明细转销售单据

    Sub CreateSaleList() AppSettings On Error GoTo ErrHandler Dim StartTime As Variant '开始时间 Dim UsedTim ...

  2. Jersey 2.x 前言和约定的文本格式

    这是Jersey 2.x 的用户指南.我们极力将它能与我们新增的功能保持一致.当阅读本指南,作为补充,也请移步至Jersey API documentation查看 Jersey 的特性和 API. ...

  3. 『科学计算_理论』优化算法:梯度下降法&牛顿法

    梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步 ...

  4. (转)使用UTL_SMTP包发送邮件

    使用UTL_SMTP包发送邮件 参考文档 Email From Oracle PL/SQL (UTL_SMTP) UTL_SMTP Oracle 存储过程中发送邮件,并支持用户验证.中文标题和内容

  5. ORACLE11G内存管理参数

    今天,对ORACLE11G的几个内存参数看了一下,记录如下,大家可以参考: 1.首先,在ORACLE11G的INIT.ORA里,有“__”开头的参数,也就是以两个下划线开头的参数,这种参数应该是系统自 ...

  6. .NET 性能优化方法总结==转

    .NET 性能优化方法总结 目录 目录 1. C#语言方面... 4 1.1 垃圾回收... 4 1.1.1 避免不必要的对象创建... 4 1.1.2 不要使用空析构函数 ★... 4 1.1.3 ...

  7. 数据库cmd窗口登录

    mysql -uroot -p123 -P3306 -h127.0.0.1 -uroot::root数据库登录用户名 -p123:数据库密码123 -P3306::3306数据库的端口号 -h127. ...

  8. 2.strcpy使用注意(2)

    分析下述代码: void test2() { char string[10],str1[10]; int i; for(i=0;i<10;i++) { srtr1='a'; } strcpy(s ...

  9. Oracle 从共享池删除指定SQL的执行计划

    ORACLE从共享池删除指定SQL的执行计划 2016-12-29 11:14 by 潇湘隐者, 2836 阅读, 0 评论, 收藏, 编辑 Oracle 11g在DBMS_SHARED_POOL包中 ...

  10. iOS 9 通用链接(Universal Links)

    什么是Universal Links? 在iOS9之前,对于从各种从浏览器.Safari中唤醒APP的需求,我们通常只能使用scheme.但是这种方式需要提前判断系统中是否安装了能够响应此scheme ...