Linux でカーネルパニック設定が有効かどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux でカーネルパニック設定が有効かどうかを確認する方法を学びます。この実験では、sysctl コマンドを使用して、重大なエラー発生後のシステムの動作を決定する kernel.panic 設定を調べ、一時的に変更する手順を案内します。

また、/etc/sysctl.conf ファイルを調べることで sysctl の設定を検証し、/proc/sys/kernel ディレクトリ内のカーネルパラメータを調べることで、これらの設定がシステムの動作にどのように影響するかを理解する方法も学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/InputandOutputRedirectionGroup -.-> linux/tee("Output Multiplexing") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/echo -.-> lab-558866{{"Linux でカーネルパニック設定が有効かどうかを確認する方法"}} linux/ls -.-> lab-558866{{"Linux でカーネルパニック設定が有効かどうかを確認する方法"}} linux/cat -.-> lab-558866{{"Linux でカーネルパニック設定が有効かどうかを確認する方法"}} linux/tee -.-> lab-558866{{"Linux でカーネルパニック設定が有効かどうかを確認する方法"}} linux/service -.-> lab-558866{{"Linux でカーネルパニック設定が有効かどうかを確認する方法"}} linux/sudo -.-> lab-558866{{"Linux でカーネルパニック設定が有効かどうかを確認する方法"}} linux/env -.-> lab-558866{{"Linux でカーネルパニック設定が有効かどうかを確認する方法"}} end

sysctl kernel.panic でパニック設定を確認する

このステップでは、sysctl コマンドを使用してカーネルのパニック設定を確認する方法を説明します。kernel.panic 設定は、カーネルパニックが発生したときのカーネルの動作を決定します。カーネルパニックは、システムが回復できない重大なエラーで、多くの場合、システムが停止または再起動します。

sysctl コマンドは、実行時にカーネルパラメータを読み取り、変更するための強力なツールです。これらのパラメータは、システムの動作のさまざまな側面を制御します。

kernel.panic 設定の現在の値を確認するには、ターミナルを開き、次のコマンドを入力します。

sysctl kernel.panic

このコマンドは、kernel.panic 設定の現在の値を表示します。次のような出力が表示されるはずです。

kernel.panic = 0

値が 0 の場合、カーネルパニックの後にシステムは自動的に再起動しません。値が 0 より大きい場合、それはカーネルが自動的に再起動するまで待機する秒数を表します。

では、kernel.panic の値を変更してみましょう。この値を 10 秒に設定するには、sudo を使用して次のコマンドを実行します。

sudo sysctl kernel.panic=10

パスワードの入力を求められます。パスワードを入力すると、コマンドは kernel.panic の値を 10 に設定します。

変更が成功したことを確認するには、再度 sysctl コマンドを実行します。

sysctl kernel.panic

次のように表示されるはずです。

kernel.panic = 10

これにより、kernel.panic 設定が正常に変更されたことが確認できます。

sysctl を使用して行った変更は一時的なもので、再起動後に失われることに注意してください。変更を永続的にするには、/etc/sysctl.conf ファイルを変更する必要があります。これについては次のステップで説明します。

cat /etc/sysctl.conf で sysctl 設定を検証する

前のステップでは、sysctl コマンドを使用して kernel.panic 設定を一時的に変更する方法を学びました。ただし、これらの変更は永続的ではなく、再起動後に失われます。変更を永続的にするには、/etc/sysctl.conf ファイルを変更する必要があります。

/etc/sysctl.conf ファイルは、sysctl の主要な設定ファイルです。このファイルには、カーネルパラメータとその希望する値のリストが含まれています。システムが起動すると、このファイルを読み取り、指定された設定を適用します。

/etc/sysctl.conf ファイルの内容を表示するには、ターミナルを開き、cat コマンドを使用します。

cat /etc/sysctl.conf

このコマンドは、ファイルの内容を表示します。いくつかのコメント(# で始まる行)と既存の設定が表示されることがあります。

## /etc/sysctl.conf - Configuration file for setting system variables
## See /etc/sysctl.d/ for additional system variables.
## See sysctl.conf (5) for more information.

では、このファイルに kernel.panic 設定を追加しましょう。echo コマンドを使用して、設定をファイルの末尾に追加します。

echo "kernel.panic = 10" | sudo tee -a /etc/sysctl.conf

このコマンドの詳細を説明します。

  • echo "kernel.panic = 10":この部分は、ファイルに追加するテキストを作成します。
  • |:これはパイプで、echo コマンドの出力を取得し、tee コマンドの入力として送信します。
  • sudo tee -a /etc/sysctl.conftee コマンドは標準入力から読み取り、標準出力と 1 つ以上のファイルに書き込みます。
    • sudo:管理者権限が必要なファイルに書き込むことを許可します。
    • -a:テキストをファイルの末尾に追加し、上書きしません。
    • /etc/sysctl.conf:変更するファイルです。

このコマンドを実行した後、設定がファイルに追加されたことを確認しましょう。再度 cat コマンドを使用します。

cat /etc/sysctl.conf

ファイルの末尾に kernel.panic = 10 の行が表示されるはずです。

## /etc/sysctl.conf - Configuration file for setting system variables
## See /etc/sysctl.d/ for additional system variables.
## See sysctl.conf (5) for more information.
kernel.panic = 10

変更を適用するには、システムを再起動するか、次のコマンドを実行します。

sudo sysctl -p

このコマンドは、sysctl/etc/sysctl.conf ファイルを読み取り、設定を適用するように指示します。

これで、kernel.panic 設定は再起動を通じて永続的になります。

/proc/sys/kernel のカーネルパラメータを調べる

このステップでは、カーネルパラメータを表示する別の方法、つまり /proc/sys/kernel ディレクトリを探索します。このディレクトリは、カーネル変数への仮想ファイルシステムインターフェースを提供します。このディレクトリ内の各ファイルは、カーネルパラメータを表しています。

/proc ディレクトリは、Linux の特殊なディレクトリで、実行中のプロセスやカーネルに関する情報を提供します。これは仮想ファイルシステムであり、つまり、その中のファイルやディレクトリは実際にはディスク上に存在せず、アクセスされたときにカーネルによって動的に作成されます。

/proc/sys/kernel ディレクトリ内のファイルを一覧表示するには、ターミナルを開き、ls コマンドを使用します。

ls /proc/sys/kernel

このコマンドは、各々がカーネルパラメータを表すファイルのリストを表示します。hostnamedomainnameosreleaseversion などのファイルが表示されます。

acpi_video_flags  ctrl-alt-del  dmesg               hostname       modules_disabled  osrelease  powersave-nap  pty  random  realtime-max-usleep  shmmax  shmall  shmmni  sysrq  tainted  threads-max  unknown_nmi_panic  version  yama

特定のカーネルパラメータの値を表示するには、対応するファイルに対して cat コマンドを使用できます。たとえば、システムのホスト名を表示するには、次のコマンドを使用します。

cat /proc/sys/kernel/hostname

これにより、システムの現在のホスト名が表示されます。

labex

同様に、カーネルバージョンを表示するには、次のコマンドを使用します。

cat /proc/sys/kernel/osrelease

これにより、カーネルバージョンが表示されます。

5.15.0-76-generic

最初のステップで見たように、sysctl コマンドを使用してこれらのパラメータを表示することもできます。たとえば、次のコマンドは cat /proc/sys/kernel/hostname と同等です。

sysctl kernel.hostname

/proc/sys/kernel ディレクトリは、カーネルの設定と状態に関する豊富な情報を提供します。システムの動作を理解し、監視する必要があるシステム管理者や開発者にとって、これは貴重なリソースです。

これらのファイルを表示することはできますが、通常は直接変更するには root 権限が必要であることに注意してください。ただし、sysctl を使用することが、カーネルパラメータを変更する好ましい方法です。なぜなら、より制御された一貫性のあるインターフェースを提供するからです。

まとめ

この実験では、sysctl コマンドを使用して Linux の kernel.panic 設定を確認し、一時的に変更する方法を探索しました。kernel.panic は、カーネルが重大なエラーに遭遇したときの動作を決定し、値が 0 の場合は自動再起動を行わず、0 より大きい値は再起動までの遅延時間(秒)を表すことを学びました。

sysctl kernel.panic を使用して現在の設定を表示し、sudo sysctl kernel.panic=10 を使用して一時的に変更しました。また、この実験では、sysctl で行った変更は再起動後には保持されず、永続的な設定には /etc/sysctl.conf ファイルの変更が必要であることを強調しました。この部分については、後続のステップで説明します。