GNU/Linux >> Linux の 問題 >  >> Linux

凍結されたLinuxシステム?これに対処する3つの方法があります

Linuxは非常に安定していることが知られていますが、最も安定したシステムでさえ、応答しなくなる状況に遭遇する可能性があります。そして、「パワー」を押し続けると、ひどい気持ちになります。このような場合に試みることができるLinuxにはいくつかのトリックがあります。現時点では、保存されていない作業を保存することは考えていません。再起動を回避する方法、または少なくとも破損を回避するために可能な限りクリーンな再起動を提供する方法を見つけたいと考えています。

この記事の目的上、Linuxは、カーネルスタックとユーザースタックの2つのスタックのセットと見なすことができます。ユーザースタック内のどこかで、プログラムが実行されています。おそらくXサーバー、ウィンドウマネージャー、およびいくつかのプログラム。 Xサーバーを含むプログラムのリストは、ユーザースタック内の別のスタックとして想像できます。この概念は、新しいLinuxユーザーが後で実行するタスクの一部を理解するのに役立ちます。

1。 xkillで応答しないプログラムを強制終了します

Linuxデスクトップを使用している場合、最初のステップは、ウィンドウマネージャーの実行コマンド(Ubuntuではalt + f2)機能を使用することです。運が良ければ、すぐにポップアップ表示されます。

次に、 xkillを実行できます。 カーソルを無効なウィンドウに向けてクリックします。

Xkillは、従来のXアイコンや、タスクバーのウィンドウを右クリックして[閉じる]をクリックするよりも高速に動作します。 Xkillは質問をせずに即座に殺します。

2。仮想コンソール(TTY)を使用して凍結されたLinuxシステムを復活させる

時々、あなたはそれほど幸運ではないでしょう、システムは完全に死んでいるように見えるかもしれません。

これは単なる幻想かもしれません。ユーザースタック内のプログラムのスタックを覚えていますか?この画像を少し使ってみましょう。

ユーザースタックのルートはXのように見えるかもしれませんが、そうではありません。

XWindowSystemは仮想コンソールで実行されます VC )、TTYとも呼ばれます。これらは、ファイルシステム上で/ dev/ttyXとして表されます。 Linuxでは複数のVCを利用できます。別のものにアクセスしようとすると、制御を取り戻すことができます。

CTRL + ALT + F {1,6} を押すと、別のVCをリクエストできます。 GUI環境または ALT + F {1,6} 別のVCから。上記のキーストロークにより、VC1から6にアクセスできます。グラフィカルインターフェイスはVC7以降で実行されます。

不安定なシステムを扱う場合は、VCの変更をリクエストするだけでも少し時間がかかることがあるので、少し辛抱してください。

仮想コンソールの変更に成功すると、ユーザーとパスワードの入力を求められます。次に、テキストモードコンソールが表示されます。ここでシステムはある程度の安定性を取り戻す必要があります。これは、Xやその他すべてが実行されている仮想コンソールが優先されなくなったためです。

ログインすると、いくつかのオプションがあります。

  • kill を使用して、機能しなくなったプログラムの強制終了を試みることができます。 またはkillall コマンド。
  • ウィンドウマネージャー、Xサーバー、またはログインマネージャーを強制終了できます。これにより、すべての子プロセスが強制終了され、すべてがうまくいくと、ログインマネージャーが再起動してグラフィカルなログイン画面を表示します。

3。他のすべてが失敗した場合は、SysReqを使用してカーネルと話し合ってください

場合によっては、TTYへの切り替えでも機能しないことがあります。システム全体が死んでいます。まだあきらめないでください、もう一度、おそらく幻想です。 Linuxには、このような状況に対応するもう1つの機能があります。

Linuxは、カーネルでコンパイルされ、ファイルで有効になっている場合、プリセット要求をカーネルに直接送信する手段を提供します。これは、ユーザースタック全体が停止している状況で役立ちます。これは、MagicSysRqキーとして知られています。 。ほとんどのディストリビューションではデフォルトでコンパイルされて有効になっていますが、これを防ぐことができるのはカーネルパニックだけです。

カーネルのコンパイル時にオプションが設定されたことを確認するために、現在のカーネルの構成ファイルを/bootで検索してみてください。オプションCONFIG_MAGIC_SYSRQを探します。前述のように、ほとんどのディストリビューションでコンパイルおよび有効化されています。有効になっていることを確認するには、次のコマンドを実行します。

sysctl kernel.sysrq

古いシステムでは、0と1の2つのオプションがありました。OFFまたはONのいずれかでした。新しいコマンドでは、有効にするコマンドをより細かく制御できます。

1より大きい値は、一部のコマンドが有効になっていることを意味します。詳細については、こちらをご覧ください。

別の値を一時的に設定するには、次のコマンドを実行します。

sudo sysctl -w kernel.sysrq=value

この値を永続的に変更するには、 /etc/sysctl.confを編集します 。 kernel.sysrqを検索し、目的の値を設定します。

それが機能するかどうかを確認する最も簡単な方法は、試してみることです。また、システムが安定している間に一連のキーストロークをテストして学習することをお勧めします。 SysRq呼び出しを実行すると、カーネルは応答を試みます。この応答は、仮想コンソール1〜6を使用している場合にのみ表示されます。フォーカスをXから移動できない場合、応答は表示されません。これは、機能していないという意味ではありません。

送信できるコマンドは多数あります。完全なリストはここで見ることができます。次のことを覚えておくことをお勧めします:

キー 説明
Alt + SysRq + r キーボードをrawモードから外し、Xから制御を奪います
Alt + SysRq + e SigTermをすべてのプロセスに送信し、正常に終了する機会を与えます
Alt + SysRq + i すべてのプロセスにSigKillを送信
Alt + SysRq + k 現在の仮想コンソールですべてのプロセスを強制終了します
Alt + SysRq + s マウントされているすべてのファイルシステムを同期し、すべてのデータをディスクにフラッシュします
Alt + SysRq + u すべてのファイルシステムを読み取り専用で再マウントします
Alt + SysRq + b システムを即座に再起動し、同期またはアンマウントしません
Alt + SysRq + o シャットダウンシステム

このコマンドの短いリストは、不安定なシステムを処理するときに強力な新しいツールを提供します。リクエストを送信するときに、カーネルの応答が表示されない場合は、コマンドの間に数秒待ってください。 HDDの操作を要求するときは、HDDライトに注意してください。

覚えておく価値のあるシーケンスが2つあります。

Alt + SysRq + r e k

このシーケンスは、応答しないXサーバーを再起動するのに適しています。まず、 Alt + SysRq + rを使用してキーボードをrawモードから解除します。 。次に、 SIGTERMの送信をリクエストします Alt + SysRq + eを使用するすべてのプロセスに 。 Xサーバーはこのリクエストで再起動する場合があります。もしそうなら、あなたはあなたのシステムを救出しました。そうでない場合は、3番目のリクエスト Alt + SysRq + kに進みます。 。 SIGKILLを送信します 現在の仮想コンソール内のすべてのプロセスに。

上記のシーケンスを実行してもシステムが応答しない場合は、次のシーケンスに進む必要があります。

Alt + SysRq + r e i s u b

この最後のコマンドは緊急再起動を開始します。

  • r :キーボードをrawモードから解除する
  • e :すべてのプロセスにSIGTERMを送信します
  • i :SIGKILLをすべてのプロセスに送信します
  • s :マウントされているすべてのファイルシステムを同期する
  • u :緊急再マウント読み取り専用
  • b :システムを即座に再起動します

これで、私が知っている応答しないシステムに対して最適なツールが装備されました。デモのために私のYouTubeチャンネルからこのビデオをフォローすることができます。

この記事で、フリーズしたLinuxシステムの扱いについて何か新しいことを学んだことを願っています。それについてのフィードバックをお聞かせください。コメントセクションを使用して、あなたの考えを共有してください。


Linux
  1. Linuxでカーネルバージョンを確認する方法

  2. Linux –異なるLinux / UNIXカーネルは交換可能ですか?

  3. 最速の Linux システム コール

  1. procps-ngを使用してターミナルでLinuxシステムを監視します

  2. Linuxカーネルをftraceで分析する

  3. x86 と x86_64 の Linux システムコール番号が異なるのはなぜですか?

  1. noatimeでLinuxシステムのパフォーマンスを向上させる

  2. straceを使用したLinuxでのシステムコールの理解

  3. Linuxシャットダウンコマンド(例付き)