Grunt watch error - Waiting…Fatal error: watch ENOSPC
当我运行监视任务时,为什么要获得Waiting...Fatal error: watch ENOSPC?我如何解决这个问题?
- 对于任何一个查看这个的人来说,这不是特定于grunt,而是任何在下面使用inotify的程序。在unix.stackexchange.com/questions/13751/…上有一个很好的解释。
经过一些研究,找到了解决办法。运行下面的命令。
1
| echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p |
对于arch linux,将这一行添加到/etc/sysctl.d/99-sysctl.conf:
1
| fs.inotify.max_user_watches=524288 |
- 好吧,这似乎解决了我的问题…但是如何呢?为什么?你有什么资料可以解释正在发生(或正在发生)的事情吗?或者你可以自己做吗?不管怎样,谢谢…
- 系统对用户可以监视的文件数有限制。如果与Dropbox等其他程序一起运行时发出咕噜声,您可以很快用完手表。此命令增加用户可以拥有的最大手表数量。
- 对于arch linux,将fs.inotify.max_user_watches=524288添加到/etc/sysctl.d/99-sysctl.conf,然后执行sysctl --system。这也将在重新启动时持续。有关详细信息,请访问wiki.archlinux.org/index.php/sysctl
- 是Macosx的答案吗?
- 这似乎对其他人有效,但我在osx上得到了一个错误…sysctl:非法选项--p
- 埃多克斯1〔3〕帮我把它清理了。问题
- 或者只是杀掉你可能拥有的同一进程的多个产卵。
- 非常适合Ubuntu,谢谢提示
- @那么为什么NPM的重复数据消除会解决这个问题呢?
- 哈!杀死Dropbox也修复了它:)
- 谢谢分享!
- arch 2:作为对tnajdek的响应,我必须将其添加到文件/usr/lib/sysctl.d/50-default.conf中。
- 说明: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作为参数加载。
- 直到最近我才遇到这个问题,我只想我知道nodejs已经更新了。我对这个解释不满意。什么是默认限制?监视文件的数量吗?我只关注.less和.php文件不能太多,我不运行Dropbox或其他任何东西,只是咕哝contrib watch
- 你是一个救世主…开箱即用!
- 在我的例子中,坏人用利弗洛和指南针咕哝着,庄严地看着文件……谢谢!
- 感谢您提到@viniciuspires,在grunt serve开始成功地为我解决了问题后重新开放的崇高。
- 所以log2 524288是19。19的意义是什么?为什么这个数字有效?
- Ubuntu 14.04-不工作:(
- 记录:早午餐同样的问题,同样的解决方法:)
- 好奇的是:我在从码头集装箱里发出咕噜声时遇到了这个问题。我花了一段时间才意识到我需要从主机操作系统而不是从容器本身执行命令。
- 它在为Ubuntu 14.04工作。非常感谢!你救了我一天。
- 为Ubuntu 14.04工作。谢谢:-!!!!
- @tnajdek你应该在这里单独回答
- 在费多拉为我工作。
- 也曾和Gulp Watch合作过
- 我真的不知道为什么这对我有用,而不是对我来说,但它确实有用!Ubuntu 14.04运行带有咕噜脚本的Foreman
- 在Ubuntu 14.04.02与Gulp/BrowserSync合作过
- 这也是解决Stack上另一个问题的方法:使用Ubuntu时出现NextTick错误(在我的例子中是14.04)。
- 在费多拉22号工作得很有魅力。
- 你能描述一下这个命令吗?它100%工作。
- @穆罕默德·拉马丹,我已经给出了其中一个答案的解释。请找到"说明"部分,其中有详细的级别说明。
- 奇迹永远不会结束!我觉得这个命令更像是巫术,但现在说得通了。
- 在Ubuntu 15.10为我工作。
- 感谢您的神奇一线解决方案。
- @我刚找到"魔法"号码的原因。引用unix.stackexchange.com/questions/13751/&hellip中的"假设您将最大值设置为524288,并且全部被使用(不可能),您将使用大约256MB/512MB的32位/64位内核内存"。
- arch linux([已弃用的sysctl.conf][1]):echo fs.inotify.max_user_watches=524288 sudo tee/etc/sysctl.d/40-max-user-watches.conf&;&;sudo sysctl--system[1]:archlinux.org/news/deprecation-of-etcsysctlconf
- 警告:这将增加不可使用的内存,最大可达256或512 MB,请参阅unix.stackexchange.com/questions/13751/…
- 这在我靴子上发生。没有安装任何Dropbox(或任何监视文件的设备)。知道如何检查监视文件的内容或实际限制是什么吗?
- 这太神奇了。谢谢您!我觉得我永远也找不到这个…
- 解决了我在本地运行react的问题。
- 在Ubuntu 16.04 sysctl: cannot stat /proc/sys/fs/inotify/max_user_watches: No such file or directory上获取此错误
每当你需要运行sudo something ...来修复某个问题时,你应该停下来想想发生了什么。虽然这里接受的答案是完全正确的,但它是治疗症状而不是问题。这相当于购买更大的马鞍来解决以下问题:错误,不能把更多的垃圾装到小马身上。小马已经装了这么多垃圾,所以小马精疲力竭地昏倒了。
另一种选择(可能相当于从小马身上取下多余的垃圾并放入垃圾场)是运行:
那就去祝贺你自己让小马开心。
- 谢谢你让小马开心。
- 谈到治疗症状……在我发现之前,我曾经做过一次grunt --force。
- 它到底是做什么的?它确实解决了我的问题。谢谢"手榴弹"
- "npm dedupe"命令遍历npm模块树,并尽可能将树中的每个包向上移动。结果是一棵扁平的树。即使不重复,它也会移动包。您可以在docs.npmjs.com/cli/dedupe上阅读更多关于不同版本模块在这种情况下会发生什么的信息。
- 这得到了我的赞成票,因为小马。
- 没用,我试了一下sudo,现在它对我有用了。
- 在我的情况下,我的问题似乎是有Dropbox安装,这似乎使用很多手表。所以我不得不使用:fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p作为公认的答案,但+1用于教我npm dedupe
- 运行"npm install grunt"时出错。消息为"(node)警告:检测到recursive process.nextick。这将在下一个版本的节点中中断。请使用setimmediate进行递归延迟。"。这解决了我的问题。
- phpstorm提供的更多信息:confluence.jetbrains.com/display/ideadev/inotify+watches+lim‌&8203;it
- 为npm更改文件系统上的某些内容是不正确的。这个答案应该被接受。
- 下面是有关vscode的更多上下文-"Visual Studio Code is Unable to Watch for File Changes in this Large Workspace"(错误enospc):code.VisualStudio.com/docs/setup/…
尝试了手榴弹的答案后,您可以使用临时修复:
1
| sudo bash -c 'echo 524288 > /proc/sys/fs/inotify/max_user_watches' |
这与KDS的答案是一样的,但不会持续改变。如果错误发生在系统正常运行时间之后,则此选项非常有用。
- 这应该是公认的答案,因为问题自然是由当前正在运行的内容引起的,而不是由错误的配置引起的(参见"pony"示例)。
要查明谁在创建不完整的实例,请尝试以下命令(源代码):
4
我的看起来像这样:
1 2 3 4 5 6 7
| 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也是这样,但我认为它也与文件监视有关。
在我的客户机崩溃后,我遇到了这个错误,我在服务器上运行的jest --watch命令仍然存在,我试图再次运行jest --watch。
上述答案中所述的添加/etc/sysctl.conf解决了这个问题,但通过ps aux | grep node和kill找到我的旧流程也很重要。
在Linux中,您可以使用以下命令修复此问题:
1
| echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p |