Comment définir et comprendre fs.notify.max_user_watches

13

Je ne comprends pas la meilleure façon de régler fs.inotify.max_user_watchesavec 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_watchesen ouvrant /etc/sysctl.confdans un éditeur et en y ajoutant ceci:

fs.inotify.max_user_watches=524288

Exécutez ensuite sudo sysctl -ppour - 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 sais que cela -wsignifie écrire, 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 -pet -w.

ccalvert
la source

Réponses:

10

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 stracele voir par eux-mêmes.)

sysctl -p

charge les paramètres à partir 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 -wseuls les paramètres sont modifiés jusqu'au prochain redémarrage, tandis que les valeurs stockées dans /etc/sysctl.confseront appliquées à nouveau à chaque démarrage du système. Mon approche habituelle consiste à utiliser -wpour tester les valeurs, puis une fois que je suis sûr que les nouveaux paramètres sont OK, écrivez-les /etc/sysctl.confou dans un fichier sous /etc/sysctl.d(généralement /etc/sysctl.d/local.conf).

Voir les pages de manuel sysctlet sysctl.conf( man sysctlet man sysctl.confsur votre système) pour plus de détails.

Stephen Kitt
la source