Jak ustawić i zrozumieć fs.notify.max_user_watches

13

Nie rozumiem, że najlepszym sposobem, aby ustawić fs.inotify.max_user_watchessię sysctl. W rzeczywistości nie rozumiem wiele z tego, co się tutaj dzieje, poza tym, że muszę ustawić liczbę plików, które mogą być oglądane przez określony proces.

Uważam, że widzę maksymalną liczbę użytkowników, uruchamiając to polecenie:

cat /proc/sys/fs/inotify/max_user_watches

Rozumiem, że niektóre osoby sugerują zmianę /proc/sys/fs/inotify/max_user_watches, otwierając /etc/sysctl.confw edytorze i dodając do niego:

fs.inotify.max_user_watches=524288

Następnie uruchom, sudo sysctl -paby - prawdopodobnie - przetworzyć zmiany wprowadzone w pliku.

Inni sugerują uruchamianie takich poleceń:

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

Wiem, że to -woznacza pisanie, ale co jest pisane i gdzie? Czy to tylko to polecenie się zmienia /proc/.../max_user_watches?

Które z dwóch podejść opisanych powyżej jest najlepsze? Rozumiem, że 524288 i 12288 to różne liczby, ale nie rozumiem różnicy między efektem działania -pa -w.

ccalvert
źródło

Odpowiedzi:

10

sysctl -wzapisuje wartości parametrów jądra do odpowiednich kluczy pod /proc/sys:

sudo sysctl -w fs.inotify.max_user_watches=12288

pisze 12288do /proc/sys/fs/inotify/max_user_watches. (To nie jest odpowiednik, to jest dokładnie to; zainteresowani czytelnicy mogą straceto zobaczyć na własne oczy.)

sysctl -p

ładuje ustawienia z pliku /etc/sysctl.conf(domyślnie) lub dowolnego pliku określonego później -p.

Różnica między tymi dwoma podejściami, poza różnymi źródłami parametrów i wartości, które zapisują, polega na tym, że -wzmienia parametry tylko do następnego ponownego uruchomienia, podczas gdy zapisane w /etc/sysctl.confnich wartości będą stosowane ponownie przy każdym uruchomieniu systemu. Moje zwykłe podejście polega na użyciu -wdo testowania wartości, a następnie, gdy jestem pewien, że nowe ustawienia są w porządku, zapisz je /etc/sysctl.conflub plik pod /etc/sysctl.d(zwykle /etc/sysctl.d/local.conf).

Szczegółowe informacje można znaleźć na stronach podręcznika sysctli sysctl.conf( man sysctloraz man sysctl.confw systemie).

Stephen Kitt
źródło