Je suis actuellement confronté à un problème sur une boîte Linux où, en tant que root, j'ai des commandes renvoyant une erreur car la limite de surveillance inotify a été atteinte.
# tail -f /var/log/messages
[...]
tail: cannot watch '/var/log/messages': No space left on device
# inotifywatch -v /var/log/messages
Establishing watches...
Failed to watch /var/log/messages; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.`
J'ai googlé un peu et chaque solution que j'ai trouvée consiste à augmenter la limite avec:
Sudo sysctl fs.inotify.max_user_watches=<some random high number>
Mais je n'ai pu trouver aucune information sur les conséquences de l'augmentation de cette valeur. Je suppose que la valeur par défaut du noyau a été définie pour une raison mais elle semble inadéquate pour des utilisations particulières. (par exemple, lorsque vous utilisez Dropbox avec un grand nombre de dossiers ou un logiciel qui surveille un grand nombre de fichiers)
Donc, voici mes questions:
Est-il sûr d'augmenter cette valeur et quelles seraient les conséquences d'une valeur trop élevée?
Oui, il est sûr d'augmenter cette valeur et voici les coûts possibles [ source ]:
Pour vérifier le nombre maximum de montres inotify:
cat /proc/sys/fs/inotify/max_user_watches
Pour définir le nombre maximum de montres inotify
Temporairement:
Sudo sysctl fs.inotify.max_user_watches=
avec votre valeur préférée à la fin.En permanence ( informations plus détaillées ):
fs.inotify.max_user_watches=524288
dans vos paramètres sysctl. Selon votre système, ils peuvent se trouver dans l'un des emplacements suivants: /etc/sysctl.conf
/etc/sysctl.d/
, par exemple. /etc/sysctl.d/40-max-user-watches.conf
sysctl -p
(Debian/RedHat) ou sysctl --system
(Arch)Vérifiez si le nombre maximum de montres inotify a été atteint:
Utilisez tail
avec le -f
(suivre) l'option sur n'importe quel ancien fichier, par exemple tail -f /var/log/dmesg
: - Si tout va bien, il affichera les 10 dernières lignes et fera une pause; abandonner avec Ctrl-C - Si vous êtes à court de montres , cela échouera avec cela erreur quelque peu cryptique :
queue: ne peut pas regarder '/ var/log/dmsg': pas d'espace disponible sur l'appareil
Pour voir ce qui utilise les montres inotify
find /proc/*/fd -lname anon_inode:inotify |
cut -d/ -f3 |
xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
uniq -c |
sort -nr
La première colonne indique le nombre de fds inotify (pas le nombre de montres cependant) et la seconde montre le PID de ce processus [sources: 1 , 2 ].