はじめに
この実験では、Linux で特定の sysctl パラメータが設定されているかどうかを確認する方法を学びます。これを達成するために、3 つの方法を探ります。具体的には、sysctl -a を使用してすべてのカーネルパラメータをリストアップする方法、/etc/sysctl.conf のシステムの sysctl 設定ファイルを調べる方法、および /proc/sys ファイルシステム内でパラメータの値を直接確認する方法です。この実験の終わりまでに、あなたは Linux システム上のカーネルパラメータ設定を効果的に調査し、理解するスキルを身につけることができるようになります。
sysctl -a で sysctl パラメータをリストする
このステップでは、sysctl コマンドを使用してカーネルパラメータを表示し、理解する方法を探ります。Linux カーネルはシステムの動作の多くの側面を管理しており、これらの動作は実行時に表示し、場合によっては変更できるパラメータによって制御されます。
sysctl コマンドは、実行時にカーネルパラメータを変更するために使用されます。これらのパラメータは通常、/proc/sys/ ディレクトリにあります。
利用可能なすべてのカーネルパラメータとその現在の値のリストを表示するには、sysctl -a コマンドを使用できます。-a オプションは、sysctl にすべてのパラメータを表示するよう指示します。
ターミナルが開いていない場合は、開きましょう。デスクトップの左側にある Xfce Terminal アイコンを見つけることができます。
次のコマンドを入力し、Enter キーを押します。
sysctl -a
次のような長い出力が表示されます(正確な出力はシステムによって異なります)。
abi.vsyscall32 = 1
fs.aio-max-nr = 1048576
fs.aio-nr = 0
fs.dentry-state = 100000, 96000, 0, 0, 0
fs.dir-notify-enable = 1
fs.file-max = 9223372036854775807
fs.file-nr = 1024 0 9223372036854775807
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 524288
...
この出力には、各パラメータ名(fs.file-max など)とその現在の値が表示されます。これらのパラメータは、ネットワーキング、ファイルシステムの動作、メモリ管理など、カーネルのさまざまな側面を制御します。
このリストをスクロールするのは圧倒的に感じるかもしれませんが、カーネルが管理している内容の包括的なビューが得られます。スペースバーを使用してページごとに下にスクロールし、出力が長く less などのページャで表示されている場合は q を押してビューを終了できます。
現時点では、このコマンドを実行するだけでこのステップは完了です。すべてのカーネルパラメータを正常にリストしました。
Continue をクリックして次のステップに進みます。
cat /etc/sysctl.conf で sysctl 設定を確認する
前のステップでは、sysctl -a を使用して長いカーネルパラメータのリストを見ました。sysctl -a は 現在の 値を表示しますが、これらの値は設定ファイルから起動時に設定される場合があります。
sysctl パラメータの主な設定ファイルの 1 つが /etc/sysctl.conf です。このファイルには、システム起動時に適用される設定が含まれています。
cat コマンドを使用してこの設定ファイルの内容を表示しましょう。cat コマンドは、ファイルの内容を表示するために使用されます。
ターミナルに次のコマンドを入力し、Enter キーを押します。
cat /etc/sysctl.conf
/etc/sysctl.conf ファイルの内容が表示されます。このファイルには、多くの場合、異なる設定の目的を説明するコメント行(# で始まる)と、パラメータ = 値 の形式で特定のカーネルパラメータを設定する行が含まれています。
以下は、表示される内容の例です(正確な内容は異なる場合があります)。
## /etc/sysctl.conf - Configuration file for setting system variables
#
## For more information, see sysctl(8) and sysctl.conf(5).
## Kernel sysctl configuration file for Debian GNU/Linux
#
## For binary values, 0 is disabled, 1 is enabled. See sysctl(8) for details.
## Uncomment this to enable software suspend
#kernel.suspend_state = 1
## Uncomment this to enable IPv4 forwarding
#net.ipv4.ip_forward = 1
## Uncomment this to enable IPv6 forwarding
#net.ipv6.conf.all.forwarding = 1
## Uncomment this to enable TCP SYN Cookie Protection
## This protects against SYN flood attacks
#net.ipv4.tcp_syncookies = 1
## Increase the maximum number of open files for the system
#fs.file-max = 100000
## Increase the maximum number of TCP connections
#net.ipv4.tcp_max_syn_backlog = 2048
#net.ipv4.tcp_max_tw_buckets = 4096
コメントアウトされていない行(# で始まらない)は、適用されるアクティブな設定です。たとえば、net.ipv4.ip_forward = 1 のような行は、IP 転送を有効にします。
このファイルを表示することで、システム起動時に明示的に設定されているカーネルパラメータを理解するのに役立ちます。
メインの sysctl 設定ファイルの内容を正常に表示しました。
Continue をクリックして次のステップに進みます。
/proc/sys 内のパラメータを確認する
前のステップでは、sysctl -a を使ってカーネルパラメータをリストし、cat /etc/sysctl.conf を使って設定ファイルを表示しました。では、これらのパラメータが実際にファイルシステム内のどこに表されているかを見てみましょう。
sysctl によって管理されるカーネルパラメータは、/proc/sys に位置する特殊な仮想ファイルシステムを通じて公開されています。このファイルシステムはディスク上に実際のファイルを保存するのではなく、カーネルのデータ構造に対するインターフェースを提供します。
/proc/sys ディレクトリの構造は、sysctl パラメータの階層的な名前を反映しています。たとえば、パラメータ net.ipv4.ip_forward は、ファイル /proc/sys/net/ipv4/ip_forward に対応しています。
再度 cat コマンドを使って、/proc/sys ファイルシステムから直接特定のパラメータの値を表示しましょう。システムのホスト名を示す kernel.hostname パラメータを見てみます。
ターミナルに次のコマンドを入力し、Enter キーを押します。
cat /proc/sys/kernel/hostname
システムのホスト名が表示されるはずです。この環境ではおそらく labex です。
labex
次に、sysctl -a の出力で見た fs.file-max パラメータの例を見てみましょう。
次のコマンドを入力し、Enter キーを押します。
cat /proc/sys/fs/file-max
システムで許可されている現在の最大オープンファイル数が表示されます。
9223372036854775807
これは、sysctl -a で見る値が /proc/sys ディレクトリ内のファイルから直接アクセスして読み取れることを示しています。cat のような標準的なファイル操作コマンドを使ってそれらの値を読み取ることができます。
/proc/sys ファイルシステムを理解することは、カーネルパラメータを扱う上で重要です。なぜなら、これが sysctl が相互作用する基盤となるメカニズムだからです。
/proc/sys 内の対応するファイルを表示することで、カーネルパラメータを正常に確認しました。
Continue をクリックしてこの実験を完了します。
まとめ
この実験では、Linux で sysctl パラメータが設定されているかどうかを確認する方法を学びました。まず、sysctl -a コマンドを使用して、利用可能なすべてのカーネルパラメータとその現在の値をリストし、カーネルのランタイム設定の包括的なビューを得ました。
次に、cat コマンドを使用して /etc/sysctl.conf ファイルを調べることで、永続的な sysctl 設定を確認する方法を探りました。最後に、/proc/sys ディレクトリ内の対応するファイルを直接調べることで、特定のパラメータの現在の値を確認する方法を学びました。これらの手順は、カーネルパラメータの状態を理解して確認するための複数の方法を提供します。



