Quand j'essaie tail -f catalina.out
, j'obtiens l'erreur:
tail: inotify cannot be used, reverting to polling: Too many open files
J'ai essayé la réponse dans ce post: Trop de fichiers ouverts - comment trouver le coupable
lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Quand j'ai exécuté la commande ci-dessus, la sortie était
17 6115
13 6413
10 6417
10 6415
9 6418
9 6416
9 6414
8 6419
4 9
4 8
Je ne vois aucun processus ayant 1024 fichiers ouverts. Le nombre de fichiers ouverts n'est-il pas 17,13,10,10,9? Ou est-ce que je comprends mal? Et tous ceux-ci étaient bash, sshd, apache2, tomcat avait le numéro 4.
J'ai aussi fait lsof | grep tail | wc -l
qui est revenu 20
. Ces chiffres ne sont pas énormes, alors pourquoi tail -f catalina.out
échouer?
tail
message était légèrement différent:tail: inotify resources exhausted
. Cette réponse m'a aidé. Vous pouvez également utilisersudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -p
pour tester si cela aide sans le modifier de manière permanente. Ce message aide également nefaria.com/2014/08/tail-inotify-resources-exhaustedJe pense que cette réponse n’est pas complète (elle ne dit rien sur la limite maximale de fichiers ouverts sur le système).
Il existe deux limites concernant le nombre maximal de fichiers ouverts:
Limite maximale de fichiers ouverts par processus .
ulimit -n
ulimit -n new_limit_number
Voici une commande pour obtenir le top 10 des processus ayant de nombreux fichiers ouverts:
Limite maximale de fichiers ouverts par système .
cat /proc/sys/fs/file-max
echo new_limit_number > /proc/sys/fs/file-max
lsof | wc -l
la source
Très probablement, vous avez manqué de vos
inotify
montres. Vous exécutez probablement des outils de synchronisation de fichiers (p. Ex. Dropbox) en arrière-plan?Sous Linux, l’implémentation interne de la
tail -f
commande utilise leinotify
mécanisme par défaut pour surveiller les modifications de fichier. Si toutes les analyses sont épuiséesinotify
(8192 par défaut), vousinotify -f
devez passer en interrogation pour détecter les modifications apportées à ce fichier.Bien sûr, vous pouvez modifier le nombre maximum de
inotify
montres.référence:
http://www.quora.com/How-is-tail-f-implemented
http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html
https: // serverfault.com/questions/510708/tail-inotify-cannot-be-used-reverting-to-polling-too-many-open-files
la source
sysctl fs.inotify.max_user_instances
aurait limite par utilisateur pourinotify
.Je l'ai expérimenté et toutes les limites du système étaient suffisamment élevées, mais les paramètres définis par l'utilisateur sont généralement relativement faibles par défaut. Vous pouvez l'augmenter
sysctl.conf
et le rechargersysctl -p
.la source
Courir
pour vérifier si trop de commandes de queue sont en cours d'exécution, comme un spawn par crontab.
la source
root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Vérifiez la version de votre noyau, il pourrait s'agir de ce bogue:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1101666
la source