LINUX远程强制重启/proc/sys/kernel/sysrq /proc/sysrq-trigger----触发器

https://www.cnblogs.com/yanghong-hnu/p/5880417.html  (

数据结构(/include/linux/leds.h))

1.     # echo 1 > /proc/sys/kernel/sysrq

2.     # echo b > /proc/sysrq-trigger

1. /proc/sys/kernel/sysrq

向sysrq文件中写入1是为了开启SysRq功能。根据linux/Documentations/sysrq.txt中所说:SysRq代表的是Magic System Request Key。开启了这个功能以后,只要内核没有挂掉,它就会响应你要求的任何操作。但是这需要内核支持(CONFIG_MAGIC_SYSRQ选项)。向/proc/sys/kernel/sysrq中写入0是关闭sysrq功能,写入1是开启,其他选项请参考sysrq.txt。需要注意的是,/proc/sys/kernel/sysrq中的值只影响键盘的操作。

那么怎么使用SysRq键呢?

在x86平台上,组合键"<ALT> + SysRq + <command key>"组成SysRq键以完成各种功能。但是,在一些键盘上可能没有SysRq键。SysRq键实际上就是"Print Screen"键。并且可能有些键盘不支持同时按三个按键,所以你可以按住"ALT键",按一下"SysRq键",再按一下"<command key>键",如果你运气好的话,这个会有效果的。不过放心,现在的键盘一般都支持同时按3个或3个以上的键。

<command key>有很多,这里只挑几个来说,其他的可以参考sysrq.txt文件。

· 'b' —— 将会立即重启系统,并且不会管你有没有数据没有写回磁盘,也不卸载磁盘,而是完完全全的立即关机

· 'o' —— 将会关机

· 's' —— 将会同步所有以挂在的文件系统

· 'u' —— 将会重新将所有的文件系统挂在为只读属性

2. /proc/sysrq-trigger

从文件名字就可以看出来这两个是有关系的。写入/proc/sysrq-trigger中的字符其实就是sysrq.txt中说的键所对应的字符,其功能也和上述一样。

所以,这两行命令先开启SysRq功能,然后用'b'命令让计算机立刻重启。

/proc/sysrq-trigger该文件能做些什么事情呢?

# 立即重新启动计算机 (Reboots the kernel without first unmounting file systems or syncing disks attached to the system)

echo "b" > /proc/sysrq-trigger

# 立即关闭计算机(shuts off the system)

echo "o" > /proc/sysrq-trigger

# 导出内存分配的信息 (可以用/var/log/message 查看)(Outputs memory statistics to the console)

echo "m" > /proc/sysrq-trigger

# 导出当前CPU寄存器信息和标志位的信息(Outputs all flags and registers to the console)

echo "p" > /proc/sysrq-trigger

# 导出线程状态信息 (Outputs a list of processes to the console)

echo "t" > /proc/sysrq-trigger

# 故意让系统崩溃 ( Crashes the system without first unmounting file systems or syncing disks attached to the system)

echo "c" > /proc/sysrq-trigger

# 立即重新挂载所有的文件系统 (Attempts to sync disks attached to the system)

echo "s" > /proc/sysrq-trigger

# 立即重新挂载所有的文件系统为只读 (Attempts to unmount and remount all file systems as read-only)

echo "u" > /proc/sysrq-trigger

此外还有两个,类似于强制注销的功能

e — Kills all processes except init using SIGTERM

i — Kills all processes except init using SIGKILL

这是一组“魔术组合键”,只要内核没有被完全锁住,不管内核在做什么事情,使用这些组合键能即时打印出内核的信息。
使用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 - 即时关机(如果机器设置并支持此项功能)。
 

Linux下/proc目录的作用

1. /proc目录

Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。

用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net,scsi和sys。 Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi目录不存在。

除了以上介绍的这些,还有的是一些以数字命名的目录,他们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的PID号为目录名,他们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。

2.子文件或子文件夹

/proc/buddyinfo 每个内存区中的每个order有多块可用,和内存碎片问题有关

/proc/cmdline  启动时传递给kernel的参数信息

/proc/cpuinfo  cpu的信息

/proc/crypto  内核使用的所有已安装的加密密码及细节

/proc/devices  已经加载的设备并分类

/proc/dma  已注册使用的ISA DMA 频道列表

/proc/execdomains Linux 内核当前支持的execution domains

/proc/fb  帧缓冲设备列表,包括数量和控制它的驱动

/proc/filesystems  内核当前支持的文件系统类型

/proc/interrupts x86 架构中的每个IRQ中断数

/proc/iomem  每个物理设备当前在系统内存中的映射

/proc/ioports  一个设备的输入输出所使用的注册端口范围

/proc/kcore代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb

/proc/mdstat 多硬盘,RAID配置信息(md=multiple disks)

/proc/loadavg 根据过去一段时间内CPU和IO的抓鬼呢太得出的负载状态,与uptime命令有关

/proc/meminfo   RAM使用的相关信息

/proc/misc 其他的主要设备(设备号为10)上注册的驱动

/proc/modules  所有加载到内核的模块列表

/proc/mounts  系统中使用的所有挂载

/proc/partitions  分区中的块分配信息

/proc/stat  所有的cpu活动信息

/proc/uptime  系统已经运行了多久

/proc/swaps  交换空间的使用情况

/proc/fs  文件系统信息

/proc/ide  ide设备信息

/proc/net  网卡设备信息

/proc/vmsat  虚拟内存统计信息

/proc/vmcore  内核panic时的内存映像

/proc/diskstats  取得磁盘信息

/proc/scsi  scsi设备信息

以下是/proc目录中进程信息

/proc/N   pid为N的进程信息

/proc/N/cmdline  进程启动命令

/proc/N/cwd  链接到进程当前工作目录

/proc/N/exe  链接到进程的执行命令文件

/proc/N/fd  包含进程相关的所有的文件描述符

/proc/N/maps  与进程相关的内存映射信息

/proc/N/mem  指代进程持有的内存,不可读

/proc/N/stat  进程的状态

/proc/N/status  进程状态信息,比stat/statm更具可读性

/proc/self  链接到当前正在运行的进程

/proc/sys/kernel/sysrq /proc/sysrq-trigger----强制重启/触发器的更多相关文章

  1. LINUX远程强制重启/proc/sys/kernel/sysrq /proc/sysrq-trigger

    1.     # echo 1 > /proc/sys/kernel/sysrq 2.     # echo b > /proc/sysrq-trigger 1. /proc/sys/ke ...

  2. 利用 /proc/sys/kernel/core_pattern隐藏系统后门

    ref:https://xz.aliyun.com/t/1098/ 这里所说的core_pattern 指的是:/proc/sys/kernel/core_pattern. 我们知道在Linux系统中 ...

  3. 关于热插拔usb hotplug /proc/sys/kernel mdev udev b...

    转:http://www.360doc.com/content/10/0527/18/9922_29835045.shtml 这篇文章说的很好http://blog.chinaunix.net/u1/ ...

  4. linux /proc/sys/fs/file-nr /proc/sys/fs/file-max /etc/security/limits.conf 三者的关联

    ulimit -n 对应 /etc/security/limits.conf 文件设置 问题: Can’t open so many files 对于linux运维的同学们,相信都遇到过这个问题. 在 ...

  5. "echo 0 /proc/sys/kernel/hung_task_timeout_secs" disable this message

    问题现象: 问题原因: 默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存.当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的. 将缓存写入磁盘时 ...

  6. linux主机hang住echo 0 > /proc/sys/kernel/hung_task_timeout_secs disables this message

    用dmesg显示如下图信息 问题原因: 默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存.当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的. ...

  7. Linux TCP/IP调优参数 /proc/sys/net/目录

    所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数,后面是它们的含义: /proc/sys/net/core/rmem_default " ...

  8. linux kernel (proc文件系统)参数

    http://blog.csdn.net/guowake/article/details/3279796 Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的. 二./pr ...

  9. /proc/sys目录下各文件参数说明

    linux 其他知识目录 原文链接:https://blog.csdn.net/hshl1214/article/details/4596583 一.前言本文档针对OOP8生产环境,具体优化策略需要根 ...

随机推荐

  1. 什么是mvvm设计模式

    目前比较流行的几个框架,例如vue.js.react.js.avalon.angular.js等,给自己的定位都是属于mvvm类型框架,那么什么是mvvm框架呢?mvvm是什么意思呢? 聊到mvvm就 ...

  2. git——日常保险操作

    git fetch --all //拉取远程最新代码 git reset --hard origin/master //如果本地无法更新,使用远程覆盖本地 git branch old_master ...

  3. log4j日志properties配置

    #Console Log log4j.rootLogger=INFO,console,debug,info,warn,error LOG_PATTERN=[%d{yyyy-MM-dd HH:mm:ss ...

  4. 05.网站点击流数据分析项目_模块开发_ETL

    项目的数据分析过程在hadoop集群上实现,主要应用hive数据仓库工具,因此,采集并经过预处理后的数据,需 要加载到hive数据仓库中,以进行后续的挖掘分析. ETL:用来描述将数据从来源端经过抽取 ...

  5. idou老师教你学Istio 25:如何用istio实现监控和日志采集

    大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...

  6. 2020即将到来!DevExpress Winforms开发有哪些新功能值得期待?

    下载DevExpress v19.2完整版 DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.DevExpress Winf ...

  7. nginx location if 的匹配规则

    cation匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹配,不区分大小写^~    #^~表示普通字符匹配,不是正则匹配.如果该选项匹配,只匹配该选 ...

  8. 快捷键IntelliJ IDEA For Mac

    http://www.cnblogs.com/wxd0108/p/5295017.html Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎  ...

  9. Time travel HDU - 4418 (概率DP)

    对于每个点两个方向(两头只有一个方向)建一个点,然后预处理出每个点走k(1≤k≤n)k(1\le k\le n)k(1≤k≤n)到哪个点,列出方程式高斯消元就行了.记得前面bfsbfsbfs出那些点不 ...

  10. 使用Eclipse进行远程调试(转)

    做开发好多年了,Debug大家肯定都不陌生,绝对称得上是家常便饭了.博主虽不敢妄下断言,但是这里也猜一下,肯定有很多人都没有使用过Remote Debug(远程调试).说来惭愧,博主也是工作了3年才用 ...