在Ubuntu 16.04上达到inotify手表的用户限制


43

我刚刚安装了Ubuntu 16.04,启动SmartGit时收到以下警告:

IOException: User limit of inotify watches reached

此外,我得到此警告启动tail -f

tail: inotify resources exhausted 

tail: inotify cannot be used, reverting to polling

我在Ubuntu 14.04上从未遇到此错误,在新Ubuntu上使用的应用程序和文件与以前版本中使用的完全相同。

唯一相关的区别是,我在PC上添加了一个额外的硬盘,并配置了Ubuntu的备份工具。这个问题可能与第二张磁盘或备份工具有关吗?


Answers:


76

Xenial上的当前默认值为8192(请参阅内核源代码中的fs / notify / inotify / inotify_user.c),您可以通过将文件打印到stdout来验证这一点:

cat /proc/sys/fs/inotify/max_user_watches
8192

您可以使用以下方法提高该数字,例如,将该数字加倍至16384:

echo 16384 | sudo tee /proc/sys/fs/inotify/max_user_watches

请记住,inotify手表确实会消耗内存,我认为在64位系统上,每个手表大约需要160字节。

要永久设置此设置,请在/etc/sysctl.conf中添加一个条目,例如:

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

..或手动编辑/etc/sysctl.conf(您需要root权限才能更新它),然后运行sudo sysctl -p


是的,谢谢。我将其加倍,现在不再有警告。16.384手表要消耗多少内存(最大)?我的计算结果给了我大约2.5MB的内存。这样对吗?
安德里亚(Andrea)

按此顺序,再加上一些开销;s
克林·伊恩·金

这里是对的(使用)可能的内存消耗一些更多的信息手表askubuntu.com/questions/154255/...
迈克尔

11

上面的答案很好用,但不能解释为什么我一直在这里寻找完整答案的原因-

为什么?

同步文件(例如dropbox,git等)的程序使用inotify来注意文件系统的更改。该限制可以通过-看到

cat /proc/sys/fs/inotify/max_user_watches

对我来说,它显示100000。如果此限制不足以监视目录中的所有文件,则会引发此错误。


增加inotify观察者的数量(简短版):

如果您正在运行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

然后将其粘贴到您的终端中,然后按Enter键运行它。


技术细节:

在Linux上,默认情况下,Listen使用inotify监视目录更改。遇到可以监视的文件数量受到系统限制的情况并不少见。例如,Ubuntu Lucid(64位)的inotify限制设置为8192。

您可以通过执行以下操作来获取当前的inotify文件监视限制:

$ cat /proc/sys/fs/inotify/max_user_watches

如果此限制不足以监视目录中的所有文件,则必须增加该限制以使“侦听”正常工作。

您可以使用以下方法临时设置新的限制:

$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p

如果您想让自己的限额永久化,请使用:

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

如果“侦听”一直在抱怨,您可能还需要注意max_queued_events和max_user_instances的值。

来源:https : //github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers


3

您可以检查现有的限制,然后根据需要进行更改

To Check : cat /proc/sys/fs/inotify/max_user_watches To Alter : sudo sysctl fs.inotify.max_user_watches=524288

这样可以解决错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.