Błąd zegarka Grunt - Oczekiwanie… Błąd krytyczny: obejrzyj ENOSPC


Odpowiedzi:


1359

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

45
Cóż, wydaje się, że rozwiązało to mój problem ... Ale jak? Dlaczego? Czy masz jakieś źródła, które wyjaśniają, co się dzieje (lub co się dzieje). A może sam to zrobisz? W każdym razie dzięki ...
slacktracer,

116
System ma ograniczenie liczby plików, które użytkownik może oglądać. Możesz szybko skończyć zegarki, jeśli Grunt działa z innymi programami, takimi jak Dropbox. To polecenie zwiększa maksymalną liczbę zegarków, jakie może mieć użytkownik.
Benjamin Manns

62
Dla Arch Linux dodać fs.inotify.max_user_watches=524288do /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
tnajdek

38
npm dedupewyjaśniono mi to. problem
reergymerej

25
wyjaśnienie: 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
kds

186

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.


42
Dzięki za uszczęśliwienie kucyka.
Christian

2
Co to dokładnie robi? Z pewnością rozwiązało to mój problem. Dzięki @ granat
Arjun KR

4
Polecenie „npm dedupe” przechodzi przez drzewo modułów npm i przenosi każdy pakiet w górę drzewa tak bardzo, jak to możliwe. Rezultatem jest płaskie drzewo. Przenosi pakiet, nawet jeśli nie jest duplikowany. Możesz przeczytać więcej o tym, co dzieje się z różnymi wersjami modułów w tym przypadku, na docs.npmjs.com/cli/dedupe
Arun Reddy

1
to nie pomogło, próbowałem sudoi teraz działa dla mnie.
asedsami,

6
W moim przypadku moim problemem jest zainstalowanie Dropboksa, który wydaje się używać wielu zegarków. Musiałem więc użyć: fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -pjak w zaakceptowanej odpowiedzi, ale +1 za nauczenie mnienpm dedupe
Johann Echavarria

36

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.


3
To powinna być zaakceptowana odpowiedź, ponieważ problem jest naturalnie spowodowany tym, co się dzieje w tej chwili, a nie złą konfiguracją (patrz przykład „kucyka”).
arielnmz

7

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.


to samo dotyczy mnie dla vscode, ale myślę, że jest to również związane z zegarkami do plików
PCLUT

3

Wystąpił ten błąd po awarii komputera klienckiego, jest --watchpolecenie, które uruchomiłem na serwerze, pozostało i próbowałem uruchomić jest --watchponownie.

Dodatek /etc/sysctl.confopisany 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 nodei killto.


0

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.


0

W moim przypadku stwierdziłem, że mam agresywną wtyczkę do Vima, właśnie ją ponownie uruchomiłem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.