Chinaunix首页 | 论坛 | 博客
  • 博客访问: 97197
  • 博文数量: 20
  • 博客积分: 542
  • 博客等级: 中士
  • 技术积分: 249
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-10 16:47
文章分类
文章存档

2013年(1)

2012年(19)

我的朋友

分类: LINUX

2012-05-18 18:00:08

在看贴之前描述一下这个功能的作用,如果你打开这个功能,当你的服务器遇到out of memory的时候,你远程连上服务器会非常缓慢,可能敲命令,系统都没有什么反映,遇到这样的情况,一般来说是得亲自跑到机房去重启机器了,或者给机房的人打电话,如果因为去不了机房,又想重启机器,可以用这个功能来重启机器

经过与守住的研讨,发现在不能使用reboot/init 6正常重启的情况下可以采用这个办法来重启

当Linux 系统不能正常响应用户请求时, 可以使用SysRq小工具控制Linux. 

一 SysRq的启用与关闭 

要想启用SysRq, 需要在配置内核时设置Magic SysRq key (CONFIG_MAGIC_SYSRQ)为Y. 对于支持SysRq的内核, /proc/sys/kernel/sysrq控制SysRq的启用与否. 如果/proc/sys/kernel/sysrq内容为0, 则SysRq被禁用; 如果/proc/sys/kernel/sysrq内容为1, 则SysRq被启用. 关于/proc/sys/kernel/sysrq的更多描述, 请参考/Documentation/sysrq.txt 

可通过运行命令echo "0" >/proc/sys/kernel/sysrq和echo "1" >/proc/sys/kernel/sysrq暂时启用或禁用SysRq. 如果需要永久启用或者禁用SysRqs, 则可在/etc/sysctl.conf中设置kernel.sysrq = 1 (启用SsyRq)或kernel.sysrq = 0 (禁用SysRq) 

二 SysRq的使用 

SysRq的命令键有 

'r'     - Turns off keyboard raw mode and sets it to XLATE. 

'k'     - Secure Access Key (SAK) Kills all programs on the current virtual 
          console. NOTE: See important comments below in SAK section. 

'b'     - Will immediately reboot the system without syncing or unmounting 
          your disks. 

'o'     - Will shut your system off (if configured and supported). 

's'     - Will attempt to sync all mounted filesystems. 

'u'     - Will attempt to remount all mounted filesystems read-only. 

'p'     - Will dump the current registers and flags to your console. 

't'     - Will dump a list of current tasks and their information to your 
          console. 

'm'     - Will dump current memory info to your console. 

'0'-'9' - Sets the console log level, controlling which kernel messages 
          will be printed to your console. ('0', for example would make 
          it so that only emergency messages like PANICs or OOPSes would 
          make it to your console.) 

'e'     - Send a SIGTERM to all processes, except for init. 

'i'     - Send a SIGKILL to all processes, except for init. 

'l'     - Send a SIGKILL to all processes, INCLUDING init. (Your system 
          will be non-functional after this.) 

'h'     - Will display help ( actually any other key than those listed 
          above will display help. but 'h' is easy to remember :-) 


在终端上同时按Alt, SysRq和命令键则会执行SysRq命令, SysRq键就是"Prent Screen"健. 比如Alt+SysRq+b则重启机器.  

如果使用telnet 或ssh连接到服务器则可以使用echo '' > /proc/sysrq-trigger的方式执行SysRq命令, 比如echo 'b' > /proc/sysrq-trigger重启系统. 

三 常用的SysRq命令(序列) 

3.1 重启机器的SysRq命令序列是 k(SAK) s(sync) u(umount) b(reboot) 

3.2 显示内存信息的SysRq命令是m(memory) 

3.3 显示当前任务信息的SysRq命令是t(task) 

四 参考材料 

/Documentation/sysrq.txt: sysrq.txt最权威的文档, 最好参考当前运行的kernel附带的文档. 或者去http://lxr.linux.no/source/Documentation/sysrq.txt查看 
阅读(1390) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~