tail: inotify kullanılamaz, yoklamaya geri döner: Çok fazla açık dosya


16

Denediğimde tail -f catalina.outhatayı alıyorum:

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

Bu yazıda cevabı denedim: Çok fazla açık dosya - suçlu nasıl bulunur

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

Yukarıdaki komutu çalıştırdığımda çıktı

17 6115

13 6413

10 6417

10 6415

9 6418

9 6416

9 6414

8 6419

4 9 

4 8

1024 dosya açık bir işlem görmüyorum. Dosya sayısı 17,13,10,10,9 değil mi? Yoksa yanlış mı anlıyorum? Ve bunların hepsi bash, sshd, apache2, tomcat 4 numaraya sahipti.

Ben de lsof | grep tail | wc -l geri döndü yaptı 20. Bu sayılar çok büyük değil, neden tail -f catalina.outbaşarısız oluyor?

Yanıtlar:


17

Bu benim için http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html adresindeki talimatları uygulayarak çözüldü.

Kalıcı çözüm (yeniden başlatmalarda korunur) Çizgi ekleme:

fs.inotify.max_user_watches=1048576

için:

/etc/sysctl.conf

limit değeri kalıcı olarak sabitledi (yeniden başlatmalar arasında bile).

o zaman bir

sysctl -p

1
Dosya tanımlayıcılarını artırmak bana yardımcı olmaz. Benim tailmesaj biraz farklıydı: tail: inotify resources exhausted. Bu cevap bana yardımcı oldu. sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -pKalıcı olarak değiştirmeden yardımcı olup olmadığını test etmek için de kullanabilirsiniz . Bu yazı aynı zamanda nefaria.com/2014/08/tail-inotify-resources-exhausted
— Ruslan Stelmachenko

9

Yanıtın tam olmadığını düşünüyorum (sistemde açılan dosyaların maksimum sınırı hakkında hiçbir şey söylemiyor).

Maksimum açık dosya sayısı ile ilgili iki sınır vardır:

  1. İşlem başına maksimum dosya sınırı .

    • Aşağıdakileri kullanarak bu sınırın değerinin hangisi olduğunu görebilirsiniz: ulimit -n
    • Bu sınırı aşağıdakileri kullanarak değiştirebilirsiniz: ulimit -n new_limit_number
    • İşte birçok dosya açık en iyi 10 işlemi almak için bir komut:

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. Sistem başına açık maksimum dosya sınırı .

    • Aşağıdakileri kullanarak bu sınırın değerinin hangisi olduğunu görebilirsiniz: cat /proc/sys/fs/file-max
    • Bu sınırı aşağıdakileri kullanarak değiştirebilirsiniz: echo new_limit_number > /proc/sys/fs/file-max
    • Tüm açık dosya tanıtıcılarını say: lsof | wc -l

6

Büyük olasılıkla, inotifysaatleriniz bitti . Muhtemelen, arka planda bazı dosya senkronizasyon araçları (örn. Dropbox) çalıştırıyorsunuz?

Linux'ta, tail -fkomutun dahili uygulaması , inotifymekanizmayı dosya değişikliklerini izlemek için varsayılan olarak kullanır. Tüm inotifysaatleriniz tükendiyse (varsayılan olarak 8192), inotify -fo dosyadaki değişiklikleri tespit etmek için yoklamaya geçmeniz gerekir.

Tabii ki, maksimum inotifysaat sayısını değiştirebilirsiniz .

başvuru:
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_instancesiçin kullanıcı başına sınır alır inotify.

Bunu deneyimledim ve tüm limit sistemi yeterince yüksekti, ancak kullanıcı tarafından ayar genellikle varsayılan olarak nispeten düşük, onu artırabilir sysctl.confve beyaza yeniden yükleyebilirsiniz sysctl -p.


3

Çalıştırmak

ps aux | grep tail

crontab tarafından bir spawn gibi çok fazla kuyruk komutunun çalışıp çalışmadığını kontrol etmek için.


ha bu gerçekten işe yaradı, çok fazla dosya kuyrukluydu
— Alexander Mills

Verileri nasıl çevirebilirim? Her bir bilgi parçasının ne anlama geldiğini ve bu konuda ne yapılacağını açıklayabilir misiniz? Örneğin:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
— Christia

Sadece ÇOK MANY işlem eşleşiyorsa, eşleşen satır "grep" komutunun kendisi tarafından oluşturulur. Lütfen bunun yerine "pgrep tail" komutunu kullanın.
— tangxinfa

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.