手表发出严重错误-等待中…致命错误:观看ENOSPC


Answers:


1359

经过一些研究发现了解决方案。运行以下命令。

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

对于Arch Linux,将此行添加到/etc/sysctl.d/99-sysctl.conf:

fs.inotify.max_user_watches=524288

45
好吧,这似乎已经解决了我的问题...但是如何呢?为什么?您是否有任何资料说明正在发生的事情(或正在发生的事情)。还是你自己做?无论如何,谢谢...
slacktracer

116
系统对用户可以观看多少文件有限制。如果让Grunt与Dropbox等其他程序一起运行,则可以很快用完手表。此命令增加了用户可以拥有的手表的最大数量。
本杰明·曼恩斯

62
对于Arch Linux,添加fs.inotify.max_user_watches=524288/etc/sysctl.d/99-sysctl.conf,然后执行sysctl --system。这也将在重新启动后持续存在。有关更多详细信息:wiki.archlinux.org/index.php/Sysctl
tnajdek 2013年

38
npm dedupe为我清理了。问题
reergymerej 2014年

25
说明: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf 在文件/etc/sysctl.conf的末尾写上“ fs.inotify.max_user_watches = 524288”行 sudo sysctl -p ,以在运行时重新配置内核,将文件/etc/sysctl.conf作为参数加载
kds,2014年

186

每当您需要运行sudo something ...以修复某些问题时,您都应该暂停思考正在发生的事情。虽然这里公认的答案是完全正确的,但它是在治疗症状而不是问题。Sorta相当于购买更大的鞍袋来解决以下问题:错误,无法将更多垃圾装载到小马上。小马已经装了太多垃圾,以至于小马精疲力尽。

一种替代方法(也许相当于从小马身上去除多余的垃圾并放入转储中)是运行:

npm dedupe

然后祝贺自己使小马快乐。


42
感谢您让小马开心。
基督教徒

2
它到底是做什么的?它肯定解决了我的问题。感谢@grenade
Arjun KR

4
'npm dedupe'命令遍历您的npm模块树,并在树中尽可能多地向上移动每个软件包。结果是一棵扁树。即使没有重复,它也会移动包装。您可以在docs.npmjs.com/cli/dedupe
Arun Reddy

1
它没有帮助,我尝试过sudo,现在它对我有用。
asedsami

6
就我而言,我的问题似乎是安装了Dropbox,它似乎使用了很多手表。因此,我不得不使用:fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p就像公认的答案一样,但是+1教我npm dedupe
Johann Echavarria '16

36

在尝试了手榴弹的答案后,您可以使用临时解决方法:

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

这与kds的答案具有相同的作用,但不保留更改。如果错误仅在系统正常运行后才发生,这将很有用。


3
这应该是公认的答案,因为问题自然是由当前运行的内容而不是由错误的配置引起的(请参见“小马”示例)。
arielnmz

7

要找出谁在制作inotify 实例,请尝试以下命令(source):

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

我的看起来像这样:

 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

使用ps -p 2857,我能够将进程2857标识为sublime_text。只有关闭所有崇高窗口后,我才能运行我的节点脚本。


vscode与我相同,但我认为它也与文件
监视

3

客户端PC崩溃后,jest --watch我在服务器上运行的命令仍然存在,并且尝试jest --watch再次运行时遇到了此错误。

/etc/sysctl.conf上面的答案中描述的其他内容都可以解决此问题,但是通过ps aux | grep node和找到我的旧流程也很重要kill



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.