Grunzüberwachungsfehler - Warten… Schwerwiegender Fehler: ENOSPC beobachten

524

Warum bekomme ich das, Waiting...Fatal error: watch ENOSPCwenn ich die Überwachungsaufgabe ausführe? Wie löse ich dieses Problem?

kds
quelle
13
Für jeden, der dies sieht, ist dies nicht spezifisch für gruntein Programm, das darunter inotify verwendet . Eine gute Erklärung finden Sie unter unix.stackexchange.com/questions/13751/… .
Jesse Good

Antworten:

1359

Nach einigen Recherchen fand die Lösung. Führen Sie den folgenden Befehl aus.

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Fügen Sie für Arch Linux diese Zeile zu /etc/sysctl.d/99-sysctl.conf hinzu:

fs.inotify.max_user_watches=524288
kds
quelle
45
Nun, es scheint mein Problem gelöst zu haben ... Aber wie? Warum? Haben Sie Quellen, die erklären, was passiert (oder passiert ist)? Oder darfst du es selbst tun? Wie auch immer, danke ...
Slacktracer
116
Das System hat eine Begrenzung, wie viele Dateien von einem Benutzer überwacht werden können. Sie können ziemlich schnell keine Uhren mehr haben, wenn Grunt mit anderen Programmen wie Dropbox läuft. Dieser Befehl erhöht die maximale Anzahl von Uhren, die ein Benutzer haben kann.
Benjamin Manns
62
Für Arch Linux hinzufügen fs.inotify.max_user_watches=524288zu /etc/sysctl.d/99-sysctl.confund führen sysctl --system. Dies bleibt auch bei Neustarts bestehen. Für weitere Informationen: wiki.archlinux.org/index.php/Sysctl
tnajdek
38
npm dedupehat es für mich geklärt. Ausgabe
reergymerej
25
Erklärung: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf Schreibt am Ende der Datei /etc/sysctl.conf die Zeile "fs.inotify.max_user_watches = 524288" sudo sysctl -p konfiguriert den Kernel zur Laufzeit neu und lädt die Datei /etc/sysctl.conf als Parameter
kds
186

Jedes Mal, wenn Sie laufen müssen sudo something ..., um etwas zu reparieren, sollten Sie eine Pause einlegen, um darüber nachzudenken, was los ist. Während die hier akzeptierte Antwort vollkommen gültig ist, behandelt sie eher das Symptom als das Problem. Sorta das Äquivalent zum Kauf größerer Satteltaschen, um das Problem zu lösen: Fehler, kann nicht mehr Müll auf Pony laden. Pony hat schon so viel Müll geladen, dass das Pony vor Erschöpfung in Ohnmacht fällt.

Eine Alternative (vielleicht vergleichbar mit dem Entfernen von überschüssigem Müll vom Pony und dem Ablegen auf der Müllkippe) ist das Ausführen von:

npm dedupe

Dann gratuliere dir, dass du das Pony glücklich gemacht hast.

Granate
quelle
42
Danke, dass du das Pony glücklich gemacht hast.
Christian
2
Was genau macht es? Es hat mein Problem sicher gelöst. Danke @grenade
Arjun KR
4
Der Befehl 'npm dedupe' geht durch Ihren npm-Modulbaum und verschiebt jedes Paket im Baum so weit wie möglich nach oben. Das Ergebnis ist ein flacher Baum. Es verschiebt ein Paket, auch wenn es nicht dupliziert wird. Weitere Informationen
Arun Reddy,
1
es hat nicht geholfen, ich habe es versucht sudound jetzt funktioniert es für mich.
Asedsami
6
In meinem Fall scheint mein Problem darin zu bestehen, Dropbox installiert zu haben, die viele Uhren zu verwenden scheint. Also musste ich verwenden: fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -pwie in der akzeptierten Antwort, aber +1 für mich lehrennpm dedupe
Johann Echavarria
36

Nachdem Sie die Antwort der Granate ausprobiert haben , können Sie eine vorübergehende Korrektur verwenden:

sudo bash -c 'echo 524288 > /proc/sys/fs/inotify/max_user_watches'

Dies entspricht der Antwort von kds , ohne jedoch die Änderungen beizubehalten . Dies ist nützlich, wenn der Fehler erst nach einer gewissen Betriebszeit Ihres Systems auftritt.

Arne L.
quelle
3
Dies sollte die akzeptierte Antwort sein, da das Problem natürlich durch das, was gerade läuft, und nicht durch eine schlechte Konfiguration verursacht wird (siehe das Beispiel "Pony").
Arielnmz
7

Versuchen Sie diesen Befehl ( Quelle ) , um herauszufinden, wer inotify- Instanzen erstellt :

for foo in /proc/*/fd/*; do readlink -f $foo; done | grep inotify | sort | uniq -c | sort -nr

Meins sah so aus:

 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

Mit ps -p 2857konnte ich Prozess 2857 als identifizieren sublime_text. Erst nachdem ich alle erhabenen Fenster geschlossen hatte, konnte ich mein Knotenskript ausführen.

Michael Lewis
quelle
das gleiche mit mir für vscode, aber ich denke, es hängt auch mit Datei-Uhren zusammen
pcnate
3

Dieser Fehler trat auf, nachdem mein Client-PC abgestürzt war, der jest --watchBefehl , den ich auf dem Server ausführte, weiterhin bestand und ich versuchte, ihn jest --watcherneut auszuführen .

Die /etc/sysctl.confin den obigen Antworten beschriebene Ergänzung hat dieses Problem umgangen, aber es war auch wichtig, meinen alten Prozess über ps aux | grep nodeund killdarüber zu finden.

Aaron
quelle
0

In meinem Fall war es mit vs-Code verbunden, der auf meinem Linux-Computer ausgeführt wurde. Ich ignorierte eine Warnung, die über File Watcher Bla Bla auftauchte. Die Lösung befindet sich auf der vs-code docs-Seite für Linux https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in- this-large-workspace-error-enospc

Die Lösung ist fast die gleiche (wenn nicht die gleiche) wie die akzeptierten Antworten, hat nur mehr Erklärungen für jeden, der hierher kommt, nachdem er auf die Probleme von vs-code gestoßen ist.

Azeez
quelle
0

In meinem Fall habe ich festgestellt, dass ich ein aggressives Plugin für Vim habe, habe es einfach neu gestartet.

Vitaly Zdanevich
quelle