2012-12-07 57 views
21

我将我的inotify手表限制设置为1024(我认为默认值是128?)。尽管如此,yeoman,Guard和Dropbox经常失败,并且告诉我要提高我的限制。在此之前,我想知道所有手表的使用情况(我的Dropbox中的文件很少)。我如何知道手表已注册?

是否有一些/ proc或/ sys的区域,或者一些我可以运行的工具来查找哪些手表当前已注册?

+0

默认值是8192,即使这个数字是一个荒谬的低数字,如果你正在做任何重要的inotify。你应该提高价值,并且可能相当多。在我的系统中,我使用的值范围在131072到1048576之间... –

+0

另请参阅:https://unix.stackexchange.com/q/386877/143394 –

回答

4
  1. 手表的默认最大数量为inotify是8192;它可以通过写入/proc/sys/fs/inotify/max_user_watches来增加。
    您可以使用sysctl fs.inotify.max_user_watches来检查当前值。

  2. 使用tail -f来验证您的操作系统是否超过inotify最大值班限制。
    tail -f命令的内部实现使用inotify机制来监视文件更改。
    如果您已经用完了您的inotify手表,你很可能会得到这个错误:

    tail: inotify cannot be used, reverting to polling: Too many open files

  3. 要找出inotify手表已被注册,您可以参考this,并this。我试过了,但没有得到理想的结果。 :-(

参考:
https://askubuntu.com/questions/154255/how-can-i-tell-if-i-am-out-of-inotify-watches
https://unix.stackexchange.com/questions/15509/whos-consuming-my-inotify-resources
https://bbs.archlinux.org/viewtopic.php?pid=1340049

3

我觉得

sudo ls -l /proc/*/fd/* | grep notify 

可能是使用你会得到具有PID列表。 inotify fd登记。

我不知道如何获得比这更多的信息! HTH

+0

如果您在工作机器上,无法访问这些文件夹 –

14

inotify的文件系统选项

sysctl fs.inotify

打开的文件

lsof | grep inotify | wc -l

增加这样

  • sysctl -n -w fs.inotify.max_user_watches=16384
  • sysctl -n -w fs.inotify.max_user_instances=512
1

以下终端命令在我的Ubuntu 16上完美地工作。04机:

for foo in /proc/*/fd/*; do readlink -f $foo; done |grep inotify |cut -d/ -f3 |xargs -I '{}' -- ps --no-headers -o '%p %U %a' -p '{}' |uniq -c |sort -n

我的问题是,我有一个很好的多数崇高文本加载一个文件夹我的硬盘。在/opt/sublime_text/plugin_host 8992/opt/sublime_text/sublime_text之间,Sublime拥有18个inotify实例,而其余的程序都在1-3之间。

由于我在做Ionic Mobile App开发,我通过将大Node.js文件夹“node_modules”添加到Sublime设置中的忽略列表中,将实例数减少了5。

"folder_exclude_patterns": [".svn", ".git", ".hg", "CVS", "node_modules"]

来源:https://github.com/SublimeTextIssues/Core/issues/1195

0

由于这是在高谷歌的结果,我从一个类似的问题在上的Unix/Linux StackExchange的my answer的复制粘贴部分:

我遇到了这个问题,并且这些答案都没有给出答案:“每个进程当前使用多少个手表?”单线所有给你多少实例是开放的,这只是故事的一部分,跟踪的东西只有在看到新手表被打开时才有用。

这将让您用开放inotify实例列表和数字手表他们,用的PID和催生这些二进制文件一起,按表计数降序排列的文件:

sudo lsof | awk '/anon_inode/ { gsub(/[urw]$/,"",$4); print "/proc/"$2"/fdinfo/"$4; }' | while read fdi; do count=$(sudo grep -c inotify $fdi); exe=$(sudo readlink $(dirname $(dirname $fdi))/exe); echo -e $count"\t"$fdi"\t"$exe; done | sort -nr > watches 

如果你在混乱的大球中发生了什么,为什么,我在the original answer上详细解释过。

相关问题