Właśnie zainstalowałem Ubuntu 16.04 i pojawia się to ostrzeżenie po uruchomieniu SmartGit :
IOException: User limit of inotify watches reached
Ponadto otrzymuję to ostrzeżenie tail -f
:
tail: inotify resources exhausted
tail: inotify cannot be used, reverting to polling
Nigdy nie pojawia się ten błąd w systemie Ubuntu 14.04, a aplikacje i pliki, których używam w nowym Ubuntu, są takie same, jak w poprzedniej wersji.
Jedyne istotne różnice polegają na tym, że dodałem dodatkowy dysk twardy na komputerze i skonfigurowałem narzędzie do tworzenia kopii zapasowych Ubuntu. Czy ten problem może być związany z drugim dyskiem lub narzędziem do tworzenia kopii zapasowych?
Odpowiedzi:
Obecne domyślne ustawienie dla Xenial to 8192 (patrz fs / powiadomienie / inotify / inotify_user.c w źródle jądra), możesz to sprawdzić, drukując plik na standardowe wyjście:
Możesz zwiększyć liczbę, na przykład podwajając ją do 16384, używając:
pamiętaj, że zegarki inotify zużywają pamięć, myślę, że w systemach 64-bitowych na zegarek przypada około 160 bajtów.
Aby ustawić to na stałe, dodaj wpis do /etc/sysctl.conf, na przykład:
.. lub ręcznie edytuj
/etc/sysctl.conf
(potrzebujesz uprawnień roota, aby go zaktualizować), a następnie uruchomsudo sysctl -p
źródło
Powyższe odpowiedzi działają świetnie, ale nie wyjaśnia, dlaczego tu się rozejrzałem, moja próba uzyskania pełnej odpowiedzi -
Dlaczego?
Programy synchronizujące pliki, takie jak dropbox, git itp., Używają inotify do zauważenia zmian w systemie plików. Limit można zobaczyć przez -
Dla mnie pokazuje 100000 . Gdy ten limit nie wystarczy do monitorowania wszystkich plików w katalogu, zgłasza ten błąd.
Zwiększanie liczby obserwatorów inotify (wersja skrócona):
Jeśli korzystasz z Debiana, RedHata lub innej podobnej dystrybucji Linuksa , uruchom następujące polecenie w terminalu:
Jeśli korzystasz z ArchLinux , uruchom zamiast tego następujące polecenie (zobacz tutaj, dlaczego):
Następnie wklej go do terminala i naciśnij klawisz Enter, aby go uruchomić.
Szczegóły techniczne:
Listen używa domyślnie inotify w systemie Linux do monitorowania katalogów pod kątem zmian. Często zdarza się, że system ogranicza liczbę plików, które można monitorować. Na przykład limit informowania Ubuntu Lucid (64-bitowy) jest ustawiony na 8192.
Możesz uzyskać bieżący limit oglądania pliku inotify, wykonując:
Jeśli ten limit nie wystarczy do monitorowania wszystkich plików w katalogu, należy go zwiększyć, aby funkcja Listen działała poprawnie.
Możesz ustawić nowy limit tymczasowy za pomocą:
Jeśli chcesz ustawić swój limit na stałe, użyj:
Być może będziesz musiał zwrócić uwagę na wartości max_queued_events i max_user_instances, jeśli Listen nadal narzeka.
Źródło: https://github.com/guard/listen/wiki/Increase-the-amount-of-inotify-watchers
źródło
Możesz sprawdzić istniejący Limit i na jego podstawie możesz go zmienić zgodnie ze swoimi wymaganiami
To Check : cat /proc/sys/fs/inotify/max_user_watches To Alter : sudo sysctl fs.inotify.max_user_watches=524288
To rozwiąże błąd.
źródło