Gdy próbuję tail -f catalina.out
, pojawia się błąd:
tail: inotify cannot be used, reverting to polling: Too many open files
Próbowałem odpowiedzieć w tym poście: Zbyt wiele otwartych plików - jak znaleźć winowajcę
lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Kiedy uruchomiłem powyższe polecenie, dane wyjściowe były
17 6115
13 6413
10 6417
10 6415
9 6418
9 6416
9 6414
8 6419
4 9
4 8
Nie widzę żadnego procesu z otwartymi plikami 1024. Czy liczba plików nie jest otwarta 17 133, 10, 10,9? A może źle to rozumiem? A wszystko to były bash, sshd, apache2, tomcat miał numer 4.
Zrobiłem też, lsof | grep tail | wc -l
co wróciło 20
. Te liczby nie są ogromne, więc dlaczego tail -f catalina.out
zawodzi?
tail
wiadomość była nieco inna:tail: inotify resources exhausted
. Ta odpowiedź pomogła mi. Możesz także użyćsudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -p
do sprawdzenia, czy to pomaga bez trwałej modyfikacji. Ten post pomaga również nefaria.com/2014/08/tail-inotify-resources-exhaustedMyślę, że odpowiedź nie jest kompletna (nie mówi nic o maksymalnym limicie plików otwartych w systemie).
Istnieją dwa ograniczenia dotyczące maksymalnej liczby otwartych plików:
Maksymalny limit plików otwartych na proces .
ulimit -n
ulimit -n new_limit_number
Oto polecenie, aby uzyskać 10 najlepszych procesów, w których otwartych jest wiele plików:
Maksymalny limit plików otwartych na system .
cat /proc/sys/fs/file-max
echo new_limit_number > /proc/sys/fs/file-max
lsof | wc -l
źródło
Najprawdopodobniej zabrakło ci
inotify
zegarków. Prawdopodobnie korzystasz z niektórych narzędzi do synchronizacji plików (np. Dropbox) w tle?W Linuksie wewnętrzna implementacja
tail -f
poleceniainotify
domyślnie korzysta z mechanizmu, aby monitorować zmiany plików. Jeśli zabrakło Ci wszystkichinotify
zegarków (domyślnie 8192),inotify -f
musisz przełączyć się na odpytywanie, aby wykryć zmiany w tym pliku.Oczywiście możesz zmodyfikować maksymalną liczbę
inotify
zegarków.odniesienie:
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
źródło
sysctl fs.inotify.max_user_instances
uzyskałby limit na użytkownika dlainotify
.Doświadczyłem tego i wszystkie granice systemu były wystarczająco wysokie, ale ustawienie przez użytkownika jest zwykle stosunkowo niskie, domyślnie możesz je zwiększyć
sysctl.conf
i ponownie załadować odrobinąsysctl -p
.źródło
Biegać
aby sprawdzić, czy uruchomiono zbyt wiele poleceń ogona, takich jak spawn przez crontab.
źródło
root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Sprawdź wersję jądra, może to być ten błąd:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1101666
źródło