tail: inotify non può essere utilizzato, ripristinando il polling: troppi file aperti


16

Quando provo a tail -f catalina.outottenere l'errore:

tail: inotify cannot be used, reverting to polling: Too many open files 

Ho provato la risposta in questo post: Troppi file aperti: come trovare il colpevole

lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head

Quando ho eseguito il comando sopra, l'output è stato

17 6115

13 6413

10 6417

10 6415

9 6418

9 6416

9 6414

8 6419

4 9 

4 8

Non vedo alcun processo con 1024 file aperti. Il numero di file non è aperto 17,13,10,10,9? O sto capendo male? E tutti questi erano bash, sshd, apache2, tomcat aveva il numero 4.

Ho anche fatto ciò lsof | grep tail | wc -l che è tornato 20. Questi numeri non sono enormi, quindi perché tail -f catalina.outfallisce?

Risposte:


17

Questo è stato risolto per me seguendo le istruzioni su http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html

Soluzione permanente (conservata attraverso i riavvii) Aggiunta di una riga:

fs.inotify.max_user_watches=1048576

per:

/etc/sysctl.conf

corretto il valore limite in modo permanente (anche tra i riavvii).

quindi fare un

sysctl -p

1
L'aumento dei descrittori di file non mi aiuta. Il mio tailmessaggio era leggermente diverso: tail: inotify resources exhausted. Questa risposta mi ha aiutato. Puoi anche usare sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -pper verificare se aiuta senza modificarlo permanentemente. Questo post aiuta anche nefaria.com/2014/08/tail-inotify-resources-exhausted
Ruslan Stelmachenko

9

Penso che la risposta non sia completa (non dice nulla sul limite massimo di file aperti sul sistema).

Esistono due limiti per quanto riguarda il numero massimo di file aperti:

  1. Limite massimo di file aperti per processo .

    • Puoi vedere qual è il valore di questo limite usando: ulimit -n
    • Puoi modificare questo limite usando: ulimit -n new_limit_number
    • Ecco un comando per ottenere i primi 10 processi con molti file aperti:

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. Limite massimo di file aperti per sistema .

    • Puoi vedere qual è il valore di questo limite usando: cat /proc/sys/fs/file-max
    • Puoi modificare questo limite usando: echo new_limit_number > /proc/sys/fs/file-max
    • Conta tutti gli handle di file aperti: lsof | wc -l

6

Molto probabilmente, hai esaurito i tuoi inotifyorologi. Probabilmente, stai eseguendo alcuni strumenti di sincronizzazione dei file (ad esempio Dropbox) in background?

In Linux, l'implementazione interna del tail -fcomando utilizza il inotifymeccanismo per impostazione predefinita, in modo da monitorare le modifiche ai file. Se hai esaurito tutti gli inotifyorologi (8192 per impostazione predefinita), devi inotify -fpassare al polling per rilevare le modifiche a quel file.

Ovviamente, puoi modificare il numero massimo di inotifyorologi.

riferimento:
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_instancesotterrebbe un limite per utente per inotify.

L'ho sperimentato e tutti i limiti del sistema erano abbastanza alti, ma le impostazioni dell'utente sono generalmente relativamente basse per impostazione predefinita, è possibile aumentarlo sysctl.confe ricaricarlo con sysctl -p.


3

Correre

ps aux | grep tail

per verificare se sono in esecuzione troppi comandi di coda, come ad esempio spawn di crontab.


ha funzionato davvero, facendo troppi file in coda
Alexander Mills,

Come traduco i dati? Puoi spiegarci cosa significa ogni informazione e cosa fare al riguardo? Ad esempio:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Christia,

È un problema solo se TROPPI processi abbinati, la riga corrispondente contiene "grep" è generata dal comando stesso. Utilizzare invece il comando "pgrep tail".
Tangxinfa,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.