2017-02-14 94 views
19

我收到以下错误,同时运行我的Rails应用程序在Ubuntu服务器目录听着错误:无法监控更改

FATAL: Listen error: unable to monitor directories for changes. Visit https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers for info on how to fix this.

我按照上面的GitHub的页面,但我无法在max_user_watches写这被设置在8192,我想将其设置为524288. 在cat /proc/sys/fs/inotify/max_user_watches该文件处于只读模式。我尝试授予写入权限,但即使访问根权限,我也获得了权限拒绝错误。

先谢谢了!

+0

有时候,如果尝试访问与您的rails项目相同的文件夹的进程过多,就会发生这种情况。例如。我正在访问2个IDE Sublime上的rails项目文件夹,VS Code也有几个进程在同一个文件夹上工作。所以,当启动服务器时,我面临着同样的错误。如果您不想增加观察者限制,只需关闭访问该文件夹的任何一个进程即可。它应该工作。 – Swaps

回答

21

侦听在Linux上默认使用inotify来监视目录以进行更改。遇到可以监视的文件数量的系统限制并不罕见。例如,Ubuntu的Lucid的(64位)inotify的限制设置为8192

1000来说太小了,尝试用524288在wiki页面说明:https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

从维基 如果您正在运行Debian ,红帽,或其他类似的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 
5

只是尝试从控制台执行此:

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

希望这会为你工作。

参考文献:click here

+0

为我工作,谢谢 –

+0

随时欢迎。 –

1

对于其他人谁可能有这个问题。我有一个VM断开连接,导致以前的rails服务器运行。以下运行解决了问题,无需增加观察者的数量。

kill -9 $(lsof -i tcp:3000 -t)