web-dev-qa-db-fra.com

Comment définir et comprendre fs.notify.max_user_watches

Je ne comprends pas la meilleure façon de définir fs.inotify.max_user_watches avec sysctl. En fait, je ne comprends pas grand-chose de ce qui se passe ici, à part le fait que je dois définir le nombre de fichiers pouvant être surveillés par un processus particulier.

Je crois que je peux voir le nombre maximum d'utilisateurs en exécutant cette commande:

cat /proc/sys/fs/inotify/max_user_watches

Ma compréhension est que certaines personnes suggèrent de changer /proc/sys/fs/inotify/max_user_watches en ouvrant /etc/sysctl.conf dans un éditeur et en y ajoutant:

fs.inotify.max_user_watches=524288

Exécutez ensuite Sudo sysctl -p pour - vraisemblablement - traiter les modifications apportées au fichier.

D'autres suggèrent d'exécuter des commandes comme celle-ci:

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

Je le sais -w signifie écriture, mais qu'est-ce qui est écrit et où? Est-ce juste que cette commande change /proc/.../max_user_watches?

Laquelle des deux approches décrites ci-dessus est la meilleure? Je comprends que 524288 et 12288 sont des nombres différents, mais je ne comprends pas la différence entre l'effet de l'exécution de -p et -w.

13
ccalvert

sysctl -w écrit les valeurs des paramètres du noyau dans les clés correspondantes sous /proc/sys:

Sudo sysctl -w fs.inotify.max_user_watches=12288

écrit 12288 à /proc/sys/fs/inotify/max_user_watches. (Ce n'est pas équivalent, c'est exactement cela; les lecteurs intéressés peuvent strace le voir par eux-mêmes.)

sysctl -p

charge les paramètres d'un fichier, /etc/sysctl.conf (par défaut), ou tout autre fichier spécifié après -p.

La différence entre les deux approches, au-delà des différentes sources des paramètres et des valeurs qu'elles écrivent, est que -w ne modifie les paramètres que jusqu'au prochain redémarrage, tandis que les valeurs stockées dans /etc/sysctl.conf sera appliqué à nouveau à chaque démarrage du système. Mon approche habituelle consiste à utiliser -w pour tester les valeurs, puis une fois que je suis sûr que les nouveaux paramètres sont OK, écrivez-les dans /etc/sysctl.conf ou un fichier sous /etc/sysctl.d (d'habitude /etc/sysctl.d/local.conf).

Voir sysctl et sysctl.conf pages de manuel (man sysctl et man sysctl.conf sur votre système) pour plus de détails.

10
Stephen Kitt