Limite utente di inotify watch raggiunto su Ubuntu 16.04


43

Ho appena installato Ubuntu 16.04 e ricevo questo avviso quando avvio SmartGit :

IOException: User limit of inotify watches reached

Inoltre ricevo questo avviso di avvio tail -f:

tail: inotify resources exhausted 

tail: inotify cannot be used, reverting to polling

Non ho mai avuto questo errore con Ubuntu 14.04 e le applicazioni e i file che sto usando sul nuovo Ubuntu sono abbastanza gli stessi che stavo usando nella versione precedente.

Le uniche differenze rilevanti sono che ho aggiunto un disco rigido aggiuntivo sul PC e ho configurato lo strumento di backup di Ubuntu. Questo problema può essere correlato con un secondo disco o con lo strumento di backup?


Risposte:


76

L'impostazione predefinita corrente su Xenial è 8192 (vedi fs / notification / inotify / inotify_user.c nel sorgente del kernel), puoi verificarlo stampando il file su stdout:

cat /proc/sys/fs/inotify/max_user_watches
8192

Puoi aumentare il numero, ad esempio, raddoppiandolo a 16384, usando:

echo 16384 | sudo tee /proc/sys/fs/inotify/max_user_watches

tieni presente che inotificare che gli orologi consumano memoria, penso che si tratti di circa 160 byte per orologio su sistemi a 64 bit.

Per impostarlo in modo permanente, aggiungere una voce a /etc/sysctl.conf, ad esempio:

echo fs.inotify.max_user_watches=16384 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

..o modifica manualmente /etc/sysctl.conf(hai bisogno dei privilegi di root per aggiornarlo) ed eseguisudo sysctl -p


Si Grazie. L'ho raddoppiato e ora non ho più avvisi. Quanta memoria (al massimo) verrà consumata per gli orologi 16.384? I miei calcoli mi danno più o meno 2,5 MB . È giusto?
Andrea,

Qualcosa in quell'ordine, più un po 'di spese generali; non è troppo grande nel grande schema delle cose.
Colin Ian King,

ecco alcune ulteriori informazioni sul possibile consumo di memoria degli orologi (usati) askubuntu.com/questions/154255/…
michael

11

Le risposte sopra funzionano alla grande, ma non spiegano perché stavo guardando qui intorno il mio tentativo di risposta completa -

Perché?

Programmi che sincronizzano file come dropbox, git etc usano inotify per notare cambiamenti nel file system. Il limite può essere visto da -

cat /proc/sys/fs/inotify/max_user_watches

Per me, mostra 100000 . Quando questo limite non è sufficiente per monitorare tutti i file all'interno di una directory, genera questo errore.


Aumentare la quantità di inotify watcher (versione breve):

Se si esegue Debian, RedHat o un'altra distribuzione Linux simile , eseguire quanto segue in un terminale:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Se stai eseguendo ArchLinux , esegui invece il seguente comando (vedi qui per il perché):

echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

Quindi incollalo nel tuo terminale e premi Invio per eseguirlo.


Dettagli tecnici:

Listen utilizza inotify per impostazione predefinita su Linux per monitorare le directory per le modifiche. Non è raro incontrare un limite di sistema sul numero di file che è possibile monitorare. Ad esempio, il limite di inotify di Ubuntu Lucid (64 bit) è impostato su 8192.

È possibile ottenere il limite di controllo file inotify corrente eseguendo:

$ cat /proc/sys/fs/inotify/max_user_watches

Quando questo limite non è sufficiente per monitorare tutti i file all'interno di una directory, il limite deve essere aumentato affinché Ascolta funzioni correttamente.

È possibile impostare un nuovo limite temporaneo con:

$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p

Se desideri rendere permanente il limite, utilizza:

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

Potrebbe anche essere necessario prestare attenzione ai valori di max_queued_events e max_user_instances se Listen continua a lamentarsi.

Fonte: https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers


3

È possibile controllare il limite esistente e in base a ciò è possibile modificarlo in base alle proprie esigenze

To Check : cat /proc/sys/fs/inotify/max_user_watches To Alter : sudo sysctl fs.inotify.max_user_watches=524288

Questo risolverà l'errore.

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.