2017-02-14 91 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)