在Ubuntu服务器中运行我的rails应用程序时出现以下错误
致命错误:侦听错误:无法监视目录中的更改。访问 https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers 有关如何解决此问题的信息。
我已经按照上面的GitHub页面,但我无法写入在8192中设置的max_user_watches,我想将其设置为524288。
在dist
中,文件只处于读取模式。我尝试授予写入权限,但即使使用root访问权限,我也会收到权限被拒绝错误。
先谢谢!!!
答案 0 :(得分:71)
1000太小了,请按照维基页面中的说明尝试使用524288:https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers
Listen在Linux上默认使用inotify监视目录 变化。在数量上遇到系统限制并不罕见 您可以监控的文件。例如,Ubuntu Lucid的(64位)inotify 限制设置为8192。
如果您正在运行Debian,RedHat或其他类似的Linux 分发,在终端中运行以下命令:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
如果您正在运行ArchLinux,请改为运行以下命令
echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
答案 1 :(得分:13)
尝试从您的控制台执行此操作:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
希望这对你有用。
参考文献:click here
答案 2 :(得分:2)
对于可能遇到此问题的其他人。我有一个VM断开连接,导致之前的rails服务器运行。在下面运行解决了问题,而无需增加观察者的数量。
kill -9 $(lsof -i tcp:3000 -t)
答案 3 :(得分:1)
就我而言,我只需要关闭终端,然后重新启动即可。当我尝试运行rails c
命令时,它会起作用:)
答案 4 :(得分:0)
这个错误对我来说是发生的,因为我有许多当前未运行的红宝石进程正在运行。只需终止它们,一切都很好
答案 5 :(得分:0)
我在开发过程中运行 rake
(即使使用 rake -h
)时遇到了这个问题,来自 https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers 的解决方案不起作用,也没有杀死正在运行的 ruby 进程,杀死终端甚至重新启动计算机。
为了避免这个错误,我对我的项目做了一个新的、干净的克隆,然后 rake
工作(也许 git clean -fdx
可以工作,但我没有尝试)。
我运行的是 rake 版本 13.0.3、rails 6.1.1、ruby 2.7.2p137。
答案 6 :(得分:0)
添加到@mayur-shah 的回答中,
关闭服务器和控制台后它对我有用。因此,如果您正在运行 Rails 服务器/控制台,请先关闭它。