tail: inotify não pode ser usado, revertendo para sondagem: Muitos arquivos abertos


16

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.outfalha?

Respostas:


17

Isso foi resolvido para mim seguindo as instruções em http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html

Solução permanente (preservada nas reinicializações) Adicionando linha:

fs.inotify.max_user_watches=1048576

para:

/etc/sysctl.conf

fixou o valor limite permanentemente (mesmo entre as reinicializações).

então faça um

sysctl -p

1
Aumentar os descritores de arquivos não me ajuda. Minha tailmensagem era ligeiramente diferente: tail: inotify resources exhausted. Essa resposta me ajudou. Você também pode usar sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -ppara testar se isso ajuda sem modificá-lo permanentemente. Este post também ajuda nefaria.com/2014/08/tail-inotify-resources-exhausted
— Ruslan Stelmachenko

9

Acho 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:

  1. Limite máximo de arquivos abertos por processo .

    • Você pode ver qual é o valor desse limite usando: ulimit -n
    • Você pode alterar esse limite usando: ulimit -n new_limit_number
    • Aqui está um comando para obter os 10 principais processos com muitos arquivos abertos:

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. Limite máximo de arquivos abertos por sistema .

    • Você pode ver qual é o valor desse limite usando: cat /proc/sys/fs/file-max
    • Você pode alterar esse limite usando: echo new_limit_number > /proc/sys/fs/file-max
    • Contar todos os identificadores de arquivos abertos: lsof | wc -l

6

Provavelmente, você ficou sem seus inotifyreló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 -fcomando usa o inotifymecanismo por padrão, para monitorar as alterações no arquivo. Se você ficar sem todos os inotifyrelógios (8192 por padrão), inotify -fprecisará mudar para a pesquisa para detectar alterações nesse arquivo.

Obviamente, você pode modificar o número máximo de inotifyreló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


3

sysctl fs.inotify.max_user_instancesobteria limite por usuário para inotify.

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.confe recarregá-lo com o mesmo valor sysctl -p.


3

Corre

ps aux | grep tail

para verificar se há muitos comandos de cauda em execução, como uma desova por crontab.


ha isso realmente funcionou, tailing maneira muitos arquivos
— Alexander Mills

Como eu traduzo os dados? Você pode explicar o que cada informação significa e o que fazer sobre isso? Por exemplo:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
— Christia

É um problema apenas se MUITOS MUITOS processos corresponderem, a linha correspondente contiver "grep" é gerada pelo próprio comando. Por favor, use o comando "pgrep tail".
— tangxinfa

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.