Quando tento tail -f catalina.out
, recebo o erro:
tail: inotify cannot be used, reverting to polling: Too many open files
Tentei a resposta neste post: Muitos arquivos abertos - como encontrar o culpado
lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Quando executei o comando acima, a saída foi
17 6115
13 6413
10 6417
10 6415
9 6418
9 6416
9 6414
8 6419
4 9
4 8
Não vejo nenhum processo com 1024 arquivos abertos. O número de arquivos não está aberto 17,13,10,10,9? Ou estou entendendo errado? E todos estes eram bash, sshd, apache2, tomcat tinha o número 4.
Eu também fiz o lsof | grep tail | wc -l
que voltou 20
. Esses números não são enormes, então por que tail -f catalina.out
falha?
tail
mensagem era ligeiramente diferente:tail: inotify resources exhausted
. Essa resposta me ajudou. Você também pode usarsudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -p
para testar se isso ajuda sem modificá-lo permanentemente. Este post também ajuda nefaria.com/2014/08/tail-inotify-resources-exhaustedAcho que a resposta não está completa (não diz nada sobre o limite máximo de arquivos abertos no sistema).
Existem dois limites em relação ao número máximo de arquivos abertos:
Limite máximo de arquivos abertos por processo .
ulimit -n
ulimit -n new_limit_number
Aqui está um comando para obter os 10 principais processos com muitos arquivos abertos:
Limite máximo de arquivos abertos por sistema .
cat /proc/sys/fs/file-max
echo new_limit_number > /proc/sys/fs/file-max
lsof | wc -l
fonte
Provavelmente, você ficou sem seus
inotify
relógios. Provavelmente, você está executando algumas ferramentas de sincronização de arquivos (por exemplo, Dropbox) em segundo plano?No Linux, a implementação interna do
tail -f
comando usa oinotify
mecanismo por padrão, para monitorar as alterações no arquivo. Se você ficar sem todos osinotify
relógios (8192 por padrão),inotify -f
precisará mudar para a pesquisa para detectar alterações nesse arquivo.Obviamente, você pode modificar o número máximo de
inotify
relógios.referência:
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
fonte
sysctl fs.inotify.max_user_instances
obteria limite por usuário parainotify
.Eu experimentei e todo o sistema de limites era alto o suficiente, mas a configuração por usuário geralmente é relativamente baixa por padrão, você pode aumentá-lo
sysctl.conf
e recarregá-lo com o mesmo valorsysctl -p
.fonte
Corre
para verificar se há muitos comandos de cauda em execução, como uma desova por crontab.
fonte
root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Verifique sua versão do kernel, pode ser este bug:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1101666
fonte