Je suis actuellement confronté à un problème sur une boîte Linux où, en tant que root, j'ai des commandes qui renvoient une erreur parce que 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 est d'augmenter la limite avec:
sudo sysctl fs.inotify.max_user_watches=<some random high number>
Mais je n’ai trouvé 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 quelconque, mais elle semble être inadéquate pour des utilisations particulières. (par exemple, lorsque vous utilisez Dropbox avec un grand nombre de dossiers ou un logiciel qui surveille beaucoup de fichiers)
Donc, voici mes questions:
- Est-il prudent d’élever cette valeur et quelles seraient les conséquences d’une valeur trop élevée?
- Existe-t-il un moyen de savoir quelles sont les surveillances actuellement définies et quel processus les configurent pour pouvoir déterminer si la limite atteinte n'est pas causée par un logiciel défectueux?
Réponses:
Est-il prudent d’élever cette valeur et quelles seraient les conséquences d’une valeur trop élevée?
Oui, il est prudent d’élever cette valeur et vous trouverez ci-dessous les coûts possibles [ source ]:
Pour vérifier le nombre maximum de montres inotify:
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) ousysctl --system
(Arch)Vérifiez si le nombre maximum de montres inotify a été atteint:
Utilisez
tail
avec l'-f
option (suivez) sur n'importe quel ancien fichier, par exempletail -f /var/log/dmesg
: - Si tout va bien, les 10 dernières lignes seront affichées et une pause sera effectuée; Abandonner avec Ctrl-C - Si vous êtes à court de montres , cela échouera avec cette erreur quelque peu cryptique :Pour voir ce qui se passe dans les montres inotify
La première colonne indique le nombre de fd inotify (pas le nombre de surveillances) et la seconde indique le PID de ce processus [sources: 1 , 2 ].
la source
I guess very few codes need the values higher than the default
Dropbox peut nécessiter une limite supérieure, en fonction du nombre de fichiers que vous avez. Iv'e a soulevé le mien sans aucun problème. en fait, la notification de dépôt (qui se produit lorsque la limite est atteinte) vous indique explicitement de l'élever./etc/sysctl.conf
/etc/sysctl.d
fonctionne également sur les nouveaux systèmes basés sur RedHat.