web-dev-qa-db-fra.com

Comment savoir quelles montres inotify ont été enregistrées?

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?

39
frio

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
37
David Canós
  1. 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.

  2. 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

  3. 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

15
zeekvfu

É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 .

4
cincodenada

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

3
brenthompson2

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

3
Guido