web-dev-qa-db-ja.com

sysctlと/ proc / *への直接書き込み

一般的なLinuxマシンでは、/proc/*にあるファイルを変更することでカーネル構成を変更できます。

たとえば、特定のネットワークインターフェイスのIPv6 accept_dadパラメーター(たとえば、eth0)の場合、次のファイルを変更します。

/proc/sys/net/ipv6/conf/eth0/accept_dad

しかし、私が最近発見したように、広く普及しているツールsysctlがあります。これは同じ目的を持ち、次のように機能します。

sysctl -w net.ipv6.conf.eth0.accept_dad=1

私の質問は、いつどのツールを使用すべきかということです。私の本能では、自分が何をしているのかがわかっている場合はファイルに直接書き込む必要がありますが、検証が必要な場合はsysctlを使用する必要があります。

sysctlは、直接制御できるもののさらに別のレイヤーであるため、これを使用することで、ファイルに直接書き込むことで回避できる潜在的なバグにさらされていると思います。

3
Adelin

sysctlは、さまざまなカーネル属性を読み取って変更するためのツールです。 Linuxだけでなく、OpenBSDやFreeBSDなど、多くのUnixライクなオペレーティングシステムで利用できます。 sysctlは通常、シェルコマンドとシステムコールの両方で使用できます。

Linuxでは、sysctlメカニズムは、/proc/sysの下の procfs 仮想ファイルシステムの一部として追加で公開されます。

sysctl syscall Linuxでは非推奨 ;であることに注意してください。代わりに/proc/sysを使用することをお勧めします(直接またはsysctlシェルコマンドを介して)。

参照:

2
Grodriguez

sysctlは、/procと対話するためのユーティリティです。一般的に、彼らは同じことを成し遂げます。数年(数十年?)前、カーネルパラメータを調整する唯一の方法は、/procの「ファイル」を手動で編集することでしたが、sysctlは後でより文明的な検索方法として登場しました。カーネルパラメータを変更します。

注目すべきことに、/procでの編集は再起動後も存続しません。これは、実験している場合に便利です。ファイル/etc/sysctl.confは、起動時に維持したいsysctlの変更を保存する場所です。代わりにファイルを編集するのが本当に好きな場合は、そこで変更を加え、sysctl -pを呼び出して変更を実行することをお勧めします。

0
Server Fault