ref.
- man proc (/proc/sysrq-trigger,/proc/sys/kernel/sysrq)
- /usr/share/doc/linux-doc/sysrq.txt.gz
- http://ja.wikipedia.org/wiki/マジックSysRqキー
(/procy/sysrq-trigger を使えるのはkernel 2.6以降)
:意図的にcrashさせることはないだろうけど。ハングアップしてシェルにも入れないような場合でも、少しでも安全に再起動させたいときとか。(電源ぶち切りは嫌だっていう)
/proc/sysrq-triggerを使わない(使えない)場合は、コンソールからAlt + SysRq(Print Screen) + Command-Key の同時押し。ただし、/proc/sys/kernel/sysrq (sysctl.conf: kernel.sysrq) が1以上で有効になってないと使えない。sysrq-trigger は↑のsysctl.confの値とは無関係に使える。
Command-Key
詳細は /usr/share/doc/linux-doc/sysrq.txt.gz 。以下、使いそうなやつ。
- 'h'
Will display help (actually any other key than those listed here will display help. but 'h' is easy to remember :-)
ヘルプ表示。ヘルプで表示される単語で大文字になってるのがcommand-keyに該当する。
- 'b'
Will immediately reboot the system without syncing or unmounting your disks.
ディスクへの同期、unmountを行わずrebootする
- 'c'
Will perform a system crash by a NULL pointer dereference. A crashdump will be taken if configured.
crashさせて(kernel panic起こす)、設定されていればcrashdumpを取得。
- 'e'
Send a SIGTERM to all processes, except for init.
init以外の全プロセスにSIGTERM送って終了させる
- 'i'
Send a SIGKILL to all processes, except for init.
init以外の全プロセスにSIGKILL送って強制終了させる
- 's'
Will attempt to sync all mounted filesystems.
マウントしている全ファイルシステムを同期(sync)する。
- 'u'
Will attempt to remount all mounted filesystems read-only.
マウントしている全ファイルシステムを読み取り専用にする。
kernel panicを起こす
実は元々これをやりたくて調べた。kernel panic時に自動で再起動するように、sysctl.confに
kernel.panic = 30 kernel.panic_on_oops = 1
を書いていて、それが本当に設定されているのかを確認したくて。
# echo c > /procy/sysrq-trigger
これでkernel panic起きる。
ただし、安全に行くならkernel panic起こす前にdiskへの書き込み等をやったほうがいいので。
# echo s > /procy/sysrq-trigger # syncして # echo u > /procy/sysrq-trigger # filesystemをreadonlyにして # echo c > /procy/sysrq-trigger # crashさせる