Cuando lo intento tail -f catalina.out
, aparece el error:
tail: inotify cannot be used, reverting to polling: Too many open files
Intenté la respuesta en esta publicación: Demasiados archivos abiertos: cómo encontrar al culpable
lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Cuando ejecuté el comando anterior, la salida fue
17 6115
13 6413
10 6417
10 6415
9 6418
9 6416
9 6414
8 6419
4 9
4 8
No veo ningún proceso con 1024 archivos abiertos. ¿No está abierto el número de archivos 17,13,10,10,9? ¿O lo estoy entendiendo mal? Y todos estos eran bash, sshd, apache2, tomcat tenía el número 4.
También hice lo lsof | grep tail | wc -l
que regresó 20
. Estos números no son enormes, entonces, ¿por qué tail -f catalina.out
falla?
tail
mensaje era ligeramente diferente:tail: inotify resources exhausted
. Esta respuesta me ayudó. También puede usarsudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -p
para probar si ayuda sin modificarlo permanentemente. Esta publicación también ayuda a nefaria.com/2014/08/tail-inotify-resources-exhaustedCreo que la respuesta no está completa (no dice nada sobre el límite máximo de archivos abiertos en el sistema).
Hay dos límites con respecto al número máximo de archivos abiertos:
Límite máximo de archivos abiertos por proceso .
ulimit -n
ulimit -n new_limit_number
Aquí hay un comando para obtener los 10 procesos principales que tienen muchos archivos abiertos:
Límite máximo de archivos abiertos por sistema .
cat /proc/sys/fs/file-max
echo new_limit_number > /proc/sys/fs/file-max
lsof | wc -l
fuente
Lo más probable es que te hayas quedado sin tus
inotify
relojes. Probablemente, ¿está ejecutando algunas herramientas de sincronización de archivos (por ejemplo, Dropbox) en segundo plano?En Linux, la implementación interna del
tail -f
comando usa elinotify
mecanismo de manera predeterminada, para monitorear los cambios de archivos. Si te has quedado sin todos losinotify
relojes (8192 por defecto), entoncesinotify -f
tienes que cambiar a sondeo para detectar cambios en ese archivo.Por supuesto, puede modificar el número máximo de
inotify
relojes.referencia:
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
fuente
sysctl fs.inotify.max_user_instances
obtendría límite por usuario parainotify
.Lo experimenté, y todos los límites del sistema eran lo suficientemente altos, pero la configuración por usuario suele ser relativamente baja por defecto, puede aumentarlo
sysctl.conf
y volver a cargarlosysctl -p
.fuente
correr
para verificar si se están ejecutando demasiados comandos de cola, como una generación de crontab.
fuente
root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Verifique la versión de su kernel, podría ser este error:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1101666
fuente