为什么我得到Waiting...Fatal error: watch ENOSPC当我运行的观察任务? 我该如何解决这个问题?< / p >
Waiting...Fatal error: watch ENOSPC
在做了一些研究后找到了解决方案。运行如下命令。
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
每当您需要运行sudo something ...来修复某些东西时,您都应该停下来想一想发生了什么。虽然这里公认的答案是完全有效的,但它只是治标不治本。这就相当于买了更大的马鞍袋来解决问题:错误,不能把更多的垃圾装在小马身上。小马已经装了这么多垃圾,快累晕了。
sudo something ...
另一种选择(可能类似于从小马身上取出多余的垃圾并将其放入垃圾场)是运行:
npm dedupe
然后恭喜你自己让小马开心了。
尝试手榴弹的回答后,您可以使用临时修复:
sudo bash -c 'echo 524288 > /proc/sys/fs/inotify/max_user_watches'
这与kds的回答相同,但是没有持久化更改。如果错误在系统运行一段时间后才发生,这是很有用的。
在我的客户端PC崩溃后,我遇到了这个错误,我在服务器上运行的jest --watch命令仍然存在,我尝试再次运行jest --watch。
jest --watch
在上面的回答中描述的添加到/etc/sysctl.conf的方法解决了这个问题,但是通过ps aux | grep node和kill找到我的旧进程也很重要。
/etc/sysctl.conf
ps aux | grep node
kill
要找出谁在创建inotify 实例,请尝试以下命令(源):
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。只有在关闭所有崇高窗口后,我才能运行我的节点脚本。
ps -p 2857
sublime_text
在我的例子中,它与运行在我的Linux机器上的vs-code有关。我忽略了弹出的关于文件监视之类的警告。解决方案在linux https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc的vs-code文档页面上
解决方案与公认的答案几乎相同(如果不相同),只是对那些在vs-code中遇到问题的人有更多的解释。
在我的例子中,我发现我有一个激进的Vim插件,只需重新启动它。