İnotify saatlerinin kullanıcı sınırına Ubuntu 16.04 tarihinde ulaşıldı


43

Ubuntu 16.04'ü yeni yükledim ve SmartGit'i başlattığımda şu uyarıyı alıyorum :

IOException: User limit of inotify watches reached

Üstelik bu uyarının başlatılmasını alıyorum tail -f:

tail: inotify resources exhausted 

tail: inotify cannot be used, reverting to polling

Ubuntu 14.04 ile bu hatayı asla alamam ve yeni Ubuntu'da kullandığım uygulamalar ve dosyalar önceki sürümde kullandığımlarla aynı.

İlgili tek fark PC’de ek bir Sabit Disk ekledim ve Ubuntu’nun yedekleme aracını yapılandırdım. Bu sorun ikinci bir diskle mi yoksa yedekleme aracıyla mı ilgili olabilir?


Yanıtlar:


76

Xenial'deki geçerli varsayılan değer 8192'dir (bkz. Çekirdek kaynağında fs / notify / inotify / inotify_user.c), dosyayı stdout'a yazdırarak bunu doğrulayabilirsiniz:

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

Aşağıdakileri kullanarak numarayı artırabilirsiniz, örneğin bunu 16384'e iki katına

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

inotify saatlerinin hafıza harcadığını unutmayın, sanırım 64 bit sistemlerde saat başına 160 bayt civarında.

Bunu kalıcı olarak ayarlamak için, /etc/sysctl.conf dosyasına bir giriş ekleyin, örneğin:

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

..veya el ile düzenleyin /etc/sysctl.conf(güncellemek için kök ayrıcalıklarına ihtiyacınız var) ve sonra çalıştırınsudo sysctl -p


Evet teşekkür ederim. İki katına çıktım ve şimdi artık uyarılarım yok. 16.384 saat için ne kadar bellek (maksimumda) kullanılacak? Hesaplarım bana az veya 2,5 MB veriyor . Doğru mu?
Andrea,

Bu sırada bir şey, ayrıca bazı ek yük; şeylerin büyük düzeninde çok büyük değil.
Colin Ian King

(kullanılmış) saatlerin olası bellek tüketimi hakkında daha fazla bilgi burada askubuntu.com/questions/154255/…
michael

11

Cevapların üstünde çok işe yarar ama bu soruyu niçin buraya bakmam gerektiğini neden açıklamıyor - tam bir cevap

Neden?

Dropbox, git etc gibi dosyaları senkronize eden programlar, dosya sistemindeki değişiklikleri fark etmek için inotify öğesini kullanır. Sınır görülebilir -

cat /proc/sys/fs/inotify/max_user_watches

Benim için 100000 gösteriyor . Bu limit bir dizindeki tüm dosyaları izlemek için yeterli olmadığında bu hatayı atar.


Inotify watcher miktarını artırmak (Kısa versiyon):

Eğer çalışıyorsa Debian, RedHat'i veya başka benzer Linux dağıtımı , bir terminal aşağıdaki çalıştırın:

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

Eğer çalışıyorsa Arch Linux , (neden için buraya bakın) yerine aşağıdaki komutu çalıştırın:

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

Ardından terminalinize yapıştırın ve çalıştırmak için enter tuşuna basın.


Teknik detaylar:

Dinle, değişiklik dizinlerini izlemek için varsayılan olarak Linux'ta kullanılmaz. İzleyebileceğiniz dosya sayısında bir sistem sınırına rastlamak nadir değildir. Örneğin, Ubuntu Lucid'in (64bit) inotify sınırı 8192 olarak ayarlanmıştır.

Geçerli inotify dosya izleme sınırınızı aşağıdakileri uygulayarak alabilirsiniz:

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

Bu limit bir dizindeki tüm dosyaları izlemek için yeterli değilse, Dinleme'nin düzgün çalışması için limit artırılmalıdır.

Geçici olarak yeni bir limit belirleyebilirsiniz:

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

Limitinizi kalıcı kılmak istiyorsanız, şunu kullanın:

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

Dinle şikayet etmeye devam ederse, max_queued_events ve max_user_instances değerlerine dikkat etmeniz gerekebilir.

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


3

Mevcut Sınırı kontrol edebilirsiniz ve gereksiniminize göre değiştirebildiğinize göre

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

Bu hatayı çözecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.