不思議なシステム要求キーSysRq

4651 ワード

SysRqとは
It is a 'magical' key combo you can hit which the kernel will respond to regardless of whatever else it is doing, unless it is completely locked up.
どうやってSysRqを使えますか?
カーネル構成SysRq
SysRqを使用する場合、カーネル構成時にMagic SysRq key(CONFIG_MAGIC_SYSRQ)をYに設定する必要があります.カーネル構成情報は次のとおりです.
  CONFIG_MAGIC_SYSRQ:                                                 
                                                                      
  If you say Y here, you will have some control over the system even  
  if the system crashes for example during kernel debugging (e.g., you
  will be able to flush the buffer cache to disk, reboot the system   
  immediately or dump some status information). This is accomplished  
  by pressing various keys while holding SysRq (Alt+PrintScreen). It  
  also works on a serial console (on PC hardware at least), if you    
  send a BREAK and then within 5 seconds a command keypress. The      
  keys are documented in <file:Documentation/sysrq.txt>. Don't say Y  
  unless you really know what this hack does.                         
                                                                      
  Symbol: MAGIC_SYSRQ [=y]                                            
  Type  : boolean                                                     
  Prompt: Magic SysRq key                                             
    Location:                                                         
      -> Kernel hacking                                               
    Defined at lib/Kconfig.debug:352                                  
    Depends on: !UML                                                  
    Selected by: KGDB_SERIAL_CONSOLE [=y] && KGDB [=y] && TTY [=y] 

SysRq機能の有効化/無効化
/proc/sys/kernel/sysrqは、カーネルがユーザ状態に提供するSysRqの有効化を制御できるインタフェースであり、/proc/sys/kernel/sysrqコンテンツが0の場合、SysRqは無効となる./proc/sys/kernel/sysrqのコンテンツが1の場合、SysRqが有効になります./proc/sys/kernel/sysrqの詳細についてはpath/to/kernel/Documentation/sysrqを参照してください.txt
SysRqの有効化
echo "1" >/proc/sys/kernel/sysrq

SysRqの無効化
echo "0" >/proc/sys/kernel/sysrq

SysRq機能を永続的に有効または無効にする必要がある場合は、/etc/sysctl.confでkernelを設定.Sysrq=1(SsyRq有効)またはkernel.Sysrq=0(SysRq無効)
# sysctl kernel.sysrq
kernel.sysrq = 0

# sysctl -w kernel.sysrq=1
kernel.sysrq = 1

# vi /etc/sysctl.conf
...
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 1
...

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のように、echo'b'>/proc/sysrq-triggerのようにSysRqコマンドを実行することができる.
参考資料
#最も権威のあるドキュメントは、現在実行されているkernelに添付されているドキュメントを参照してください.
/Documentation/sysrq.txt: sysrq.txt
#SysRqキーを使用して、保留中のLinuxを安全に再起動
http://www.vpsee.com/2013/10/safe-reboot-linux-with-the-magic-sysrq-key/