web-dev-qa-db-ja.com

fs.notify.max_user_watchesを設定して理解する方法

sysctlfs.inotify.max_user_watchesを設定する最良の方法がわかりません。実際、ここで何が起こっているのかは、特定のプロセスで監視できるファイルの数を設定する必要があることを除いて、あまりわかりません。

次のコマンドを実行すると、ユーザーの最大数を確認できると思います。

cat /proc/sys/fs/inotify/max_user_watches

私の理解では、一部の人々は/proc/sys/fs/inotify/max_user_watchesをエディタで開いてこれを追加することで/etc/sysctl.confを変更することを提案しています。

fs.inotify.max_user_watches=524288

次に、Sudo sysctl -pを実行して、おそらくファイルに加えられた変更を処理します。

他の人はこのようなコマンドを実行することを提案します:

Sudo sysctl -w fs.inotify.max_user_instances=1024
Sudo sysctl -w fs.inotify.max_user_watches=12288

-wは書き込みを表しますが、何がどこに書き込まれているのですか?このコマンドが/proc/.../max_user_watchesを変更するだけですか?

上で概説した2つのアプローチのどちらが最適ですか? 524288と12288は異なる数値であることを理解していますが、-p-wを実行した場合の効果の違いがわかりません。

13
ccalvert

sysctl -wは、カーネルパラメータ値を/proc/sysの下の対応するキーに書き込みます。

Sudo sysctl -w fs.inotify.max_user_watches=12288

12288/proc/sys/fs/inotify/max_user_watchesに書き込みます。 (それは同等ではありません、それはまさにそれです;興味のある読者はそれを自分で見るためにstraceすることができます。)

sysctl -p

/etc/sysctl.conf(デフォルト)、または-pの後に指定されたファイルから設定をファイルからロードします。

両方のアプローチの違いは、それらが書き込むパラメーターと値のさまざまなソースを超えて、-wは次の再起動までパラメーターを変更するだけですが、/etc/sysctl.confに保存された値は、システムが起動します。私の通常のアプローチは-wを使用して値をテストすることです。その後、新しい設定に問題がないことを確認したら、/etc/sysctl.confまたは/etc/sysctl.dの下のファイルに書き込みます(通常は/etc/sysctl.d/local.conf)。

詳細については、 sysctl および sysctl.conf のマニュアルページ(システム上のman sysctlおよびman sysctl.conf)を参照してください。

10
Stephen Kitt