web-dev-qa-db-ja.com

sysctl -aはどこからすべてのカーネルパラメータを出力しますか?

Linuxマシン(Redhat 6)があります。

/etc/sysctl.confからすべてのパラメーターを出力すると、最大20しか表示されませんが、sysctl -aを実行すると、200を超える数が表示されます。

だからどこからsysctl -aこれらのすべてのパラメータを印刷しますか?

または例えば私たちがするとき

sysctl -w variable=value

変数を保存する場所を知る方法は?

動的または静的な場合、各パラメーターをどのように知るのですか?

4
yael

Sysctl 設定はカーネルに保存されます。これらの設定はカーネルの動作に影響します。基本的に、それらはカーネルの変数であり、システムで実行されているプログラムが読み書きできます。

カーネルの起動時、各sysctl設定にはデフォルト値があります。この値は、sysctlコマンドなどのプログラムによって、またはLinuxでは、/proc/sysの下の対応するファイルに書き込むことによって、いつでも変更できます。

ファイル/etc/sysctl.confは、実行時の設定値を決定しません。カーネルにコンパイルされたデフォルト値から一部の設定を変更するために、ブート時にのみ使用されます。 /etc/sysctl.confにいくつかの変更を加えた場合は、sysctlの「サービス」を再起動することにより、全体としてそれらを適用できます。sysctlサービスは実行中のプロセスに対応しておらず、単にロードする疑似サービスです起動時にカーネルに設定します。

再起動しても値が保持されるように設定を変更する場合は、/etc/sysctl.confに追加します。設定を一時的に適用するか、試してみるには、sysctlまたはecho … >/proc/sys/…を使用します。

各パラメーターが動的か静的かを知る方法は?

sysctlのすべてのカーネルパラメータは動的です。カーネルのバージョンに応じて番号を確認する場合、sysctl -a | wc -lは1000以上である必要があります。

値を読み取るには、いくつかのスマートオプションがあります。

sysctl net.ipv4.ip_forward          # display specific parameter
sysctl net.ipv4                     # display all net.ipv4.* parameters
sysctl -a                           # display all parameters

また、値を永続的に書き込むには、/etc/sysctl.confまたは/etc/sysctl.d/ディレクトリ内の任意のconfファイルを使用できます。confファイルを更新したら、構成ファイルを再ロードする必要があります。

sysctl -p [filename]

もちろん、Gillesが概説したように、sysctl“サービス”を再起動するだけです。

Sysctl -aはどこからすべてのカーネルパラメータを出力しますか?

疑似ファイルシステムprocfs(man procfs)から。カーネルデータ構造へのインターフェイスを提供します。通常、システムによって/procに自動的にマウントされます。

1
prosti