SysRq ユーティリティとは
カーネルがフリーズまたはハングした場合は、「魔法の」SysRq ツールを使用できます。 「魔法の」SysRq キーにより、Sync、Unmount、kill プロセス、showMem、showPc、reBoot など、いくつかの重要なカーネル コマンドに即座にアクセスできます。 Linux カーネルのドキュメントによると:
これは、コンソールが応答しなくても、他に何をしていてもカーネルが応答する、ヒットできる「魔法の」キーの組み合わせです。SysRq を有効にする方法
SysRq キーは、「Magic SysRq」を設定することでアクティブ化できます。 kernel.sysrq を確認する必要があります。 sysctl.conf が適切に設定されている:
kernel.sysrq = 1 (SysRq turned ON) kernel.sysrq = 0 (SysRq turned OFF)注意 :CentOS/RHEL 7 では、「/usr/lib/sysctl.d/50-default.conf」に変更を加える必要があります。
上記の設定により、システムの起動後に SysRq がデフォルトで有効になります (デフォルトでは、CentOS/RHEL では無効になっています)。有効にするには、現在のセッションですぐに実行し、次のコマンドを使用します:
# echo 1 > /proc/sys/kernel/sysrq
再度無効にするには:
# echo 0 > /proc/sys/kernel/sysrq注意 :SysRq を有効にすると、物理的なコンソール アクセスを持つユーザーが追加の機能を利用できるようになるため、問題のトラブルシューティングを行わない場合や、物理的なコンソール アクセスが適切に保護されていることを確認する場合は、SysRq を無効にすることをお勧めします。
SysRq イベントをトリガーする方法
SysRq イベントをトリガーするには、いくつかの方法があります。ほとんどのアーキテクチャでは、次のキーの組み合わせを使用してコンソールから SysRq イベントをトリガーできます:
Alt+PrintScreen+[CommandKey]
PrintScreen は、ほとんどの Linux システムで SysRq キーとして使用されるキーです。
応答しないシステムにアクセスするには、Alt+SysRq と H を押してオプションのリストを取得します。カーネルのバージョンが異なれば、オプションも異なる場合があります。現在のカーネルでサポートされているオプションを取得するには、root として以下のコマンドを実行できます:
# echo h > /proc/sysrq-trigger
dmesg の出力を確認します。以下は RHEL 7 システムの例です:
# dmesg [ 4338.124035] SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
SysRq イベントの種類
SysRq 機能が有効になるとトリガーできる SysRq イベントがいくつかあります。これらはカーネルのバージョンによって多少異なりますが、一般的に使用されるものがいくつかあります:
キー | 機能 |
---|---|
分 | メモリ割り当てに関するダンプ情報 |
t | スレッド状態情報をダンプ |
p | 現在の CPU レジスタとフラグをダンプする |
c | 意図的にシステムをクラッシュさせます (カーネルパニック)。 kdump を介して vmcore をキャプチャするのに役立ちます。 |
マウントされたすべてのファイルシステムを即座に同期 | |
う | ただちにすべてのファイルシステムを読み取り専用で再マウント |
b | すぐにマシンを再起動 |
o | すぐにマシンの電源を切ります (構成およびサポートされている場合) |
f | Out Of Memory Killer (OOM) を開始 |
w | 中断できない (ブロックされた) 状態のタスクをダンプします |
ルート シェルから SysRq イベントをトリガーする方法
マシンにルート シェルがある場合 (そしてシステムが十分に応答している場合)、コマンド キー文字を /proc/sysrq-trigger に書き込むこともできます。 ファイル。これは、システム コンソールを使用していないときにこの情報をトリガーする場合や、スクリプトからトリガーする場合に役立ちます。
# echo 'm' > /proc/sysrq-trigger
この方法には、kernel.sysrq の場合でも機能するという追加の利点があります。 は 0 に設定されています。
CentOS / RHEL 6 :kdump の設定方法CentOS / RHEL 7 :kdump の設定方法