対象とするUbuntuのバージョン
- すべて
原文
PmDematagodaが公式フォーラムに投稿した、"MagicSysRq keys for assistance with Ubuntu troubles"(2008/01/19時点の内容)
はじめに
SysRqキーは他のキーと組み合わせて使うことで、さまざまな低レベルコマンドをシステムの状態に関係なく実行することができます。ただし、Linuxカーネル自身がカーネルパニックを起こしていたり、フリーズしている場合は利用できません。Xサーバのフリーズ状態から復帰する場合や、ファイルシステムを破壊することなくコンピュータを再起動する際によく使われます。
フリーズしたUbuntuを安全に再起動するには
Ubuntuがフリーズし何もできなくなったとしましょう。可能な限りHDDにダメージを与えたり、データをなくすことなく、きれいにOSを再起動したい場合に、このSysRqキーが役に立ちます。
フリーズした場合、Alt+PrintScreen+R+S+E+I+U+Bと押していくだけです。この際、下線で示したキーは常に押しておくこと、そしてそれぞれのキーはコマンドが正しく実行されるように少し長めに押しつづけることに注意してください(例えば、Rキーを1,2秒間押しつづけてから、次のSキーを入力してください)。最初にうまく動作しなかった場合は、今度はキー入力時間をさらに長めに取って、再び実行してみてください。
"Raising Skinny Elephants Is Utterly Boring"(やせこけた象を立ち上がらせるのは、本当にうんざりだ)というフレーズを覚えれば、R+S+E+I+U+Bという流れを覚えられるでしょう。
それぞれのキーの意味は、Raw(キーボードのコントロールをXから取り戻す)、tErminate(kill -15を実行し、プログラムを可能な限り通常終了させる)、kIll(kill -9を実行し、プログラムを強制終了させる)、Sync(メモリ上のデータをディスクに書き込む)、Unmount(すべてのディスクを読み込み専用で再マウントする)、reBoot(システムを再起動する)となっています。
注意:この一連のキー入力では、再起動前に必要なアンマウントプロセスがカーネルに依存しているため、カーネルがフリーズした状態ではうまく動作しません。
フリーズしたUbuntuを安全に終了するには
安全に終了させるためのキーは、最後のキーを除いて「Ubuntuを安全に再起動する」ときに入力したキーと変わりありません。 Alt+PrintScreen+R+S+E+I+U+Oと押していくだけです。以前と同様に、下線で示したキーは常に押しておくこと、そしてそれぞれのキーはコマンドが正しく実行されるように少し長めに押しつづけることに注意してください。
それぞれのキーの意味は、Raw(キーボードのコントロールをXから取り戻す)、tErminate(kill -15を実行し、プログラムを可能な限り通常終了させる)、kIll(kill -9を実行し、プログラムを強制終了させる)、Sync(フラッシュメモリ上のデータをディスクに書き込む)、Unmount(すべてのディスクを読み込み専用で再マウントする)、shutdOwn(システムを終了する)となっています。
注意:この一連のキー入力では、終了前に必要なアンマウントプロセスがカーネルに依存しているため、カーネルがフリーズした状態ではうまく動作しません。
SysRqで利用できるキーの概要
キー |
説明 |
0-9 |
コンソールがカーネルのログで溢れかえらないように、ログのレベルを設定できます。 |
B |
システムが安全に再起動できる状態かどうかを確認することなく再起動を行います。このキーを単独で使えば、即座に強制再起動が行われます。 |
E |
initを除くすべてのプロセスにSIGTERMシグナルを送ります。つまり、initを除く既存のプロセスは安全に、ドキュメントなどを保存して、終了するように試みます。 |
F |
oom_kill(Out Of Memory Killer)を呼び出します。これにより、メモリを浪費しているプロセスを終了させます。 |
H |
SysRqキーに関するヘルプを端末上に表示します。 |
I |
initを除くすべてのプロセスにSIGKILLシグナルを送ります。つまり、initを除く既存のプロセスは強制終了されます。この際、強制終了されたプロセスのデータは失われる可能性があります。 |
K |
現在の端末上のすべてのプロセスが終了されます。Xが動いているコンソール上でこれを実行すると、GUIはすべて停止し、SysRqを利用したあとにttyに移動する必要が生じます。よって、Xが動いているコンソール上でこれを実行することはやめたほうがいいでしょう。 |
L |
initを含むすべてのプロセスにSIGKILLシグナルを送ります。initを含むすべてのプロセスが強制終了されるので、システム上のすべての機能が停止し、SysRqキーも使えなくなります。この場合、強制的に再起動する必要が生じるでしょう。 |
M |
コンソール上にメモリの情報を表示します。 |
O |
ACPIや、古いシステムだとAPM越しにシステムをシャットダウンします。"B"キーのときと同様に、このキーを単独で利用した場合は、強制再起動と同じような状態になります(今回の場合だと、強制終了)。 |
P |
コンソール上に現在のレジスタとフラグの内容を表示します。 |
Q |
コンソール上にすべてのタイマー情報を表示します。 |
R |
Xサーバからキーボードとマウスのコントロールを取り戻します。Xサーバがクラッシュし、コンソールに移動してXサーバを終了させたり、エラーログを確認したい場合に便利でしょう。 |
S |
ディスクキャッシュ上のデータをすべて、ハードディスクに書き込みます。この同期作業により、データが破壊される可能性を減らすことができます。 |
T |
コンソール上に現在のタスクリストとその情報を表示します。 |
U |
現在マウントされているすべてのファイルシステムを、書き込み不可の状態で再マウントします。このキーを実行した後は、システムにダメージを与えることなく、Alt+SysRq+Bを使って再起動することができます。 |
W |
中断できない(ブロックされた)状態のタスクを表示します。 |
マジックSysRqキーとは、必要な目的にあわせたキーの入力方法をさします。例えば、Alt+SysRq+Bと入力すれば、強制再起動と同じようなコマンドが実行されます。
注意:Ubuntu用のガイドではありますが、他のLinuxディストリビューションでもほとんど差異なく利用できます。