J'ai ma limite de surveillance inotify fixée à 1024 (je pense que la valeur par défaut est 128?). Malgré cela, yeoman, Guard et Dropbox échouent constamment et me disent d'augmenter ma limite d'inotification. Avant de le faire, j'aimerais savoir ce qui consomme toutes mes montres (j'ai très peu de fichiers dans ma Dropbox).
Existe-t-il une zone de/proc ou/sys, ou un outil que je peux exécuter, pour savoir quelles montres sont actuellement enregistrées?
inotify options du système de fichiers
sysctl fs.inotify
fichiers ouverts
lsof | grep inotify | wc -l
Augmentez les valeurs comme ceci
sysctl -n -w fs.inotify.max_user_watches=16384
sysctl -n -w fs.inotify.max_user_instances=512
Le nombre maximal par défaut de montres inotify
est 8192; il peut être augmenté en écrivant dans /proc/sys/fs/inotify/max_user_watches .
Vous pouvez utiliser sysctl fs.inotify.max_user_watches
Pour vérifier la valeur actuelle.
Utilisez tail -f
Pour vérifier si votre système d'exploitation dépasse la limite de surveillance maximale inotify
.
L'implémentation interne de la commande tail -f
Utilise le mécanisme inotify
pour surveiller les modifications de fichiers.
Si vous n'avez plus de inotify
montres, vous obtiendrez probablement cette erreur:
tail: inotify ne peut pas être utilisé, retour à l'interrogation: trop de fichiers ouverts
Pour savoir quelles montres inotify
ont été enregistrées, vous pouvez vous référer à this et this . J'ai essayé, mais je n'ai pas obtenu le résultat idéal. :
Référence:
--- (https://askubuntu.com/questions/154255/how-can-i-tell-if-i-am-out-of-inotify-watches
https://unix.stackexchange.com/questions/15509/whos-consuming-my-inotify-resources
https://bbs.archlinux.org/viewtopic.php?pid=1340049
Étant donné que cela est élevé dans les résultats Google, je copie une partie de ma réponse à partir d'une question similaire sur Unix/Linux StackExchange:
J'ai rencontré ce problème, et aucune de ces réponses ne vous donne la réponse "combien de montres chaque processus utilise-t-il actuellement?" Les lignes simples vous donnent toutes combien de instances sont ouvertes, ce qui n'est qu'une partie de l'histoire, et les éléments de trace ne sont utiles que pour voir de nouvelles montres ouvertes.
Cela vous donnera un fichier avec une liste d'instances ouvertes inotify
et le nombre de montres qu'elles ont, ainsi que les pids et les binaires qui les a engendrés, triés par ordre décroissant par nombre de montres:
Sudo lsof | awk '/anon_inode/ { gsub(/[urw]$/,"",$4); print "/proc/"$2"/fdinfo/"$4; }' | while read fdi; do count=$(Sudo grep -c inotify $fdi); exe=$(Sudo readlink $(dirname $(dirname $fdi))/exe); echo -e $count"\t"$fdi"\t"$exe; done | sort -nr > watches
Si vous êtes intéressé par ce que fait cette grosse boule de désordre et pourquoi, je l'ai expliqué en détail sur la réponse d'origine .
La commande de terminal suivante a parfaitement fonctionné pour moi sur ma machine Ubuntu 16.04:
for foo in /proc/\*/fd/*; do readlink -f $foo; done |grep inotify |cut -d/ -f3 |xargs -I '{}' -- ps --no-headers -o '%p %U %a' -p '{}' |uniq -c |sort -n
Mon problème était que j'avais une bonne majorité de mon disque dur chargé dans un dossier dans Sublime Text . Entre /opt/sublime_text/plugin_Host 8992
et /opt/sublime_text/sublime_text
, Sublime avait 18 cas d'inotify alors que le reste de mes programmes étaient tous entre 1-3.
Comme je faisais Ionic Développement d'applications mobiles, j'ai réduit le nombre d'instances de 5 en ajoutant le grand dossier Node.js "node_modules" à la liste d'ignorance dans les paramètres Sublime.
"folder_exclude_patterns": [".svn", ".git", ".hg", "CVS", "node_modules"]
Source: https://github.com/SublimeTextIssues/Core/issues/1195
Je pense
Sudo ls -l /proc/*/fd/* | grep notify
pourrait être utile. Vous obtiendrez une liste des pids qui ont un fd inotify enregistré.
Je ne sais pas comment obtenir plus d'informations que ça! HTH