侦听错误:无法监视目录以进行更改

时间:2017-02-14 12:02:07

标签: ruby-on-rails ruby ubuntu

在Ubuntu服务器中运行我的rails应用程序时出现以下错误

  

致命错误:侦听错误:无法监视目录中的更改。访问   https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers   有关如何解决此问题的信息。

我已经按照上面的GitHub页面,但我无法写入在8192中设置的max_user_watches,我想将其设置为524288。 在dist中,文件只处于读取模式。我尝试授予写入权限,但即使使用root访问权限,我也会收到权限被拒绝错误。

先谢谢!!!

7 个答案:

答案 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 服务器/控制台,请先关闭它。