电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 599|回复: 0

linux在启动项中添加echo 1 > /proc/sys/kernel/sysrq有什么作用?

[复制链接]
admin 发表于 2022-8-25 15:09:31 | 显示全部楼层 |阅读模式
有时我们在rc.local中发现 echo 1 > /proc/sys/kernel/sysrq  有这个语句,这个语句有什么作用呢?


linux为什么要安全关机,而不要强制关电源呢?
  • 在linux下,为了提高性能,会把大量的数据缓存在内存中,直到有内存页的换入换出,才会把相应的数据写回磁盘,故其不是实时同步数据到磁盘,这时,只有手动触发sync或其他条件,内核才会把数据从内存写回物理磁盘。
  • 当在运行linux时出现键盘可操作,但系统无法登陆,并且“CTRL+ALT+DEL”组合键也无法使用,只有内核在运行时,即内核并没有完全的挂掉,此时,如果我们强行关机或重启,可能造成数据的丢失,甚至导致文件系统损坏。
在linux下,当我们的系统发生故障,内核仍在运行,键盘依旧可以用,只是没办法登陆或者重启电脑(按电脑重启键除外),这时,我们可以使用“SysRq魔法键(magic SysRq key)”来实现安全关机。
  • 要使用SysRq,内核必需有对CONFIG_MAGIC_SYSRQ的支持才可以使用,现在很多linux发行版已支持该功能,比如我的Ubuntu10.04就可以支持了,如何验证是否开启呢?只需要如下命令即可:
    grep “CONFIG_MAGIC_SYSRQ” /boot/config-`uname – r`
    当返回值为CONFIG_MAGIC_SYSRQ=y,即是默认是支持的。

    除了内核支持外,还需要启用SysRq,sysrq才能用:
    我们可以通过下面命令查看SysRq是否开启:
    cat /proc/sys/kernel/sysrq
    当返回1时则开启,0时则关闭。
  • 设置sysrq开启的方法:
  • 1)echo 1 > /proc/sys/kernel/sysrq  (所以很多服务器都把这条语句加在 rc.local中,以确保sysrq被开启,设置关闭就是 echo 0)
  • 2)修改 /etc/sysctl.conf文件,设置kernel.sysrq=1

    大家在键盘上找,可以找到一个叫做“Sys Rq"的键,在有些键盘上SysRq键实际上就是"Print Screen"键。
    SysRq 其实是一种叫做系统请求的东西,按住Alt+Print的时候就相当于按住了SysRq键,这个时候输入的一切都会直接由Linux内核来处理,它可以进行许多低级操作。因此当我们的系统发生故障,内核仍在运行,键盘依旧可以用,只是没办法登陆或者重启电脑(按电脑重启键除外),这时,我们可以使用“SysRq魔法键(magic SysRq key)”来实现安全关机。

  • 下面再说在sysrq启用的情况下,如何使用 sysrq具体操作来重启系统:
    方法一、
  •       按Alt+Print+b ,将会立即重启系统,并且不会管你有没有数据没有写回磁盘,也不卸载磁盘,而是完完全全的立即重启; 这样虽然系统可以重启,但是不够安全,安全的方法,建议是  Alt+Print+ 依次按下reisub这几个键,按完b后系统就会重启,其中每个按键都是一个参数,具体意义如下:
  • r  -unraw将键盘控制从 X Server那里抢回来
  • e -tErminate给所有进程发送SIGTERM信号,让他们自己解决善后
  • i -kill给所有进程发送SIGKILL信号,强制他们马上关闭
  • s -Sync 即时同步所有挂载的文件系统
  • u -Unmount即时重新挂载所有的文件系统为只读
  • b -reBoot 即时重新启动系统
  • m -导出关于内存分配的信息
  • t -导出线程状态信息
  • p -导出当前CPU寄存器信息和标志位的信息
  • c -故意让系统崩溃(在使用netdump或diskdump的时候有用)
  • o -即时关机(如果机器设置并支持此项功能)

  • 方法二、
  • 我们可以使用proc文件系统中的sysrq-trigger结点进行操作,
  • 例如我们可以执行  echo b > /proc/sysrq-trigger,其效果同“ALT+SysRq+b”组合按键一样,系统将会立即重启。
您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-11-27 12:43 , Processed in 0.097908 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表