Odpowiedzi:
Po przeprowadzeniu niektórych badań znalazłem rozwiązanie. Uruchom poniższe polecenie.
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
W przypadku Arch Linux dodaj tę linię do /etc/sysctl.d/99-sysctl.conf:
fs.inotify.max_user_watches=524288
fs.inotify.max_user_watches=524288
do /etc/sysctl.d/99-sysctl.conf
, a następnie wykonać sysctl --system
. Będzie to również obowiązywać podczas ponownego uruchamiania. Aby uzyskać więcej informacji: wiki.archlinux.org/index.php/Sysctl
npm dedupe
wyjaśniono mi to. problem
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
zapisuje na końcu pliku /etc/sysctl.conf wiersz „fs.inotify.max_user_watches = 524288” sudo sysctl -p
rekonfiguruje jądro w czasie wykonywania, ładując plik /etc/sysctl.conf jako parametr
Za każdym razem, gdy musisz pobiec, sudo something ...
aby coś naprawić, zatrzymaj się, aby pomyśleć o tym, co się dzieje. Chociaż przyjęta tutaj odpowiedź jest całkowicie poprawna, to raczej leczenie objawu niż problemu. Sortuj odpowiednik kupowania większych sakw, aby rozwiązać problem: błąd, nie można załadować więcej śmieci na kucyka. Kucyk ma już tyle śmieci, że kucyk zemdlał z wyczerpania.
Alternatywą (być może porównywalną do usuwania nadmiaru śmieci z kucyka i umieszczania go w śmietniku) jest uruchomienie:
npm dedupe
Następnie pogratuluj sobie szczęścia.
sudo
i teraz działa dla mnie.
fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
jak w zaakceptowanej odpowiedzi, ale +1 za nauczenie mnienpm dedupe
Po wypróbowaniu odpowiedzi granatu możesz użyć tymczasowej poprawki:
sudo bash -c 'echo 524288 > /proc/sys/fs/inotify/max_user_watches'
To robi to samo co odpowiedź kds , ale bez utrwalania zmian. Jest to przydatne, jeśli błąd pojawia się po pewnym czasie przestoju systemu.
Aby dowiedzieć się, kto tworzy instancje inotify , wypróbuj to polecenie ( źródło ):
for foo in /proc/*/fd/*; do readlink -f $foo; done | grep inotify | sort | uniq -c | sort -nr
Mój wyglądał tak:
25 /proc/2857/fd/anon_inode:inotify
9 /proc/2880/fd/anon_inode:inotify
4 /proc/1375/fd/anon_inode:inotify
3 /proc/1851/fd/anon_inode:inotify
2 /proc/2611/fd/anon_inode:inotify
2 /proc/2414/fd/anon_inode:inotify
1 /proc/2992/fd/anon_inode:inotify
Używając ps -p 2857
, byłem w stanie zidentyfikować proces 2857 jako sublime_text
. Dopiero po zamknięciu wszystkich wysublimowanych okien mogłem uruchomić skrypt węzła.
Wystąpił ten błąd po awarii komputera klienckiego, jest --watch
polecenie, które uruchomiłem na serwerze, pozostało i próbowałem uruchomić jest --watch
ponownie.
Dodatek /etc/sysctl.conf
opisany w powyższych odpowiedziach dotyczył tego problemu, ale ważne było również, aby znaleźć mój stary proces za pośrednictwem ps aux | grep node
i kill
to.
W moim przypadku było to związane z działaniem kodu vs na moim komputerze z systemem Linux. Zignorowałem ostrzeżenie, które pojawiło się na temat obserwatora plików bla bla. Rozwiązanie znajduje się na stronie dokumentacji vs-code dla systemu Linux https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in- this-large-workspace-error-enospc
Rozwiązanie jest prawie takie samo (jeśli nie takie samo) jak zaakceptowane odpowiedzi, po prostu ma więcej wyjaśnień dla każdego, kto pojawi się tutaj po napotkaniu problemów z vs-code.
W moim przypadku stwierdziłem, że mam agresywną wtyczkę do Vima, właśnie ją ponownie uruchomiłem.
grunt
żadnego programu używającego inotify poniżej. Istnieje dobre wytłumaczenie na stronie unix.stackexchange.com/questions/13751/… .