Festlegen und Verstehen von fs.notify.max_user_watches

13

Ich verstehe nicht , den besten Weg zu setzen fs.inotify.max_user_watchesmit sysctl. Tatsächlich verstehe ich nicht viel von dem, was hier passiert, außer der Tatsache, dass ich die Anzahl der Dateien festlegen muss, die von einem bestimmten Prozess überwacht werden können.

Ich glaube, dass ich die maximale Anzahl von Benutzern sehen kann, indem ich diesen Befehl ausführe:

cat /proc/sys/fs/inotify/max_user_watches

Nach meinem Verständnis schlagen einige Leute vor, Änderungen vorzunehmen, /proc/sys/fs/inotify/max_user_watchesindem sie /etc/sysctl.confin einem Editor öffnen und diesen hinzufügen:

fs.inotify.max_user_watches=524288

Führen Sie dann aus, sudo sysctl -pum - vermutlich - die an der Datei vorgenommenen Änderungen zu verarbeiten.

Andere schlagen vor, Befehle wie diesen auszuführen:

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

Ich weiß, das -wsteht für Schreiben, aber was wird geschrieben und wo? Ändert sich dieser Befehl nur /proc/.../max_user_watches?

Welcher der beiden oben beschriebenen Ansätze ist der beste? Ich verstehe, dass 524288 und 12288 unterschiedliche Zahlen sind, aber ich verstehe den Unterschied zwischen dem Effekt des Laufens -pund nicht -w.

ccalvert
quelle

Antworten:

10

sysctl -wschreibt Kernel-Parameterwerte in die entsprechenden Schlüssel unter /proc/sys:

sudo sysctl -w fs.inotify.max_user_watches=12288

schreibt 12288an /proc/sys/fs/inotify/max_user_watches. (Es ist nicht gleichwertig, es ist genau das; interessierte Leser können stracees selbst sehen.)

sysctl -p

Lädt Einstellungen entweder aus einer Datei /etc/sysctl.conf(Standardeinstellung) oder aus einer beliebigen Datei, die danach angegeben wird -p.

Der Unterschied zwischen beiden Ansätzen besteht über die unterschiedlichen Quellen der von ihnen geschriebenen Parameter und Werte hinaus darin, dass -wdie Parameter nur bis zum nächsten Neustart geändert werden, während die darin gespeicherten Werte bei /etc/sysctl.confjedem Systemstart erneut angewendet werden. Mein üblicher Ansatz besteht darin -w, Werte zu testen. Wenn ich sicher bin, dass die neuen Einstellungen in Ordnung sind, schreiben Sie sie in /etc/sysctl.confeine Datei oder in eine Datei unter /etc/sysctl.d(normalerweise /etc/sysctl.d/local.conf).

Siehe die sysctlund sysctl.confHandbuchseiten ( man sysctlund man sysctl.confauf Ihrem System) für weitere Einzelheiten.

Stephen Kitt
quelle