打开的文件太多 - 无法初始化inotify:已达到用户对inotify实例总数的限制

ver*_*ger 7 inotify compass-sass

我该如何解决以下问题?我正在使用罗盘.

   Too many open files - Failed to initialize inotify: the user limit on the total number of inotify instances has been reached.
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/rb-inotify-0.9.5/lib/rb-inotify/notifier.rb:64:in `initialize'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/adapters/linux.rb:66:in `initialize_worker'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/adapter.rb:87:in `initialize'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/adapters/linux.rb:31:in `initialize'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/adapter.rb:226:in `works?'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/adapter.rb:190:in `usable_and_works?'
org/jruby/RubyEnumerable.java:1425:in `all?'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/adapter.rb:190:in `usable_and_works?'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/adapter.rb:57:in `select_and_initialize'
org/jruby/RubyArray.java:1613:in `each'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/adapter.rb:55:in `select_and_initialize'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/listener.rb:291:in `initialize_adapter'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/listener.rb:283:in `setup'
    /home/rmack/Downloads/compass.app/lib/ruby/jruby/listen-1.3.1-patched/lib/listen/listener.rb:65:in `start!'
    /home/rmack/Downloads/compass.app/lib/ruby/compass_1.0/sass-3.4.13/lib/sass/plugin/compiler.rb:405:in `listen_to'
    /home/rmack/Downloads/compass.app/lib/ruby/compass_1.0/sass-3.4.13/lib/sass/plugin/compiler.rb:338:in `watch'
    /home/rmack/Downloads/compass.app/lib/ruby/compass_1.0/compass-1.0.3/lib/compass/sass_compiler.rb:46:in `watch!'
    /home/rmack/Downloads/compass.app/lib/ruby/compass_1.0/compass-1.0.3/lib/compass/commands/watch_project.rb:41:in `perform'
file:/home/rmack/Downloads/compass.app/compass-app.jar!/app_watcher.rb:12:in `watch!'
file:/home/rmack/Downloads/compass.app/compass-app.jar!/ui/tray.rb:447:in `watch'
Run Code Online (Sandbox Code Playgroud)

Tom*_*art 16

对于Linux:

检查当前值max_user_instances:

$ cat /proc/sys/fs/inotify/max_user_instances
Run Code Online (Sandbox Code Playgroud)

增加这个价值:

$ echo 256 > /proc/sys/fs/inotify/max_user_instances
Run Code Online (Sandbox Code Playgroud)

为了使该更改永久添加一行/etc/sysctl.conf:

fs.inotify.max_user_instances = 256
Run Code Online (Sandbox Code Playgroud)

  • 这很奇怪,该命令仅从当前 shell(例如“bash”)切换到“sh”。在 Debian 上你可以尝试 `sudo sysctl fs.inotify.max_user_instances=256` (2认同)

小智 6

这通常是一个 linux 配置问题。 增加的文件数量打开/etc/security/limits.conf

看起来您使用的是 Mac OS,在这种情况下您应该使用 sysctl。 将以下内容添加/etc/sysctl.conf

kern.maxfiles=your new value kern.maxfilesperproc=your new value
Run Code Online (Sandbox Code Playgroud)

  • 这对我有帮助,但是增加这个有什么缺点吗? (2认同)