我将我的inotify手表限制设置为1024(我认为默认值是128?)。尽管如此,yeoman,Guard和Dropbox经常失败,并且告诉我要提高我的限制。在此之前,我想知道所有手表的使用情况(我的Dropbox中的文件很少)。我如何知道手表已注册?
是否有一些/ proc或/ sys的区域,或者一些我可以运行的工具来查找哪些手表当前已注册?
我将我的inotify手表限制设置为1024(我认为默认值是128?)。尽管如此,yeoman,Guard和Dropbox经常失败,并且告诉我要提高我的限制。在此之前,我想知道所有手表的使用情况(我的Dropbox中的文件很少)。我如何知道手表已注册?
是否有一些/ proc或/ sys的区域,或者一些我可以运行的工具来查找哪些手表当前已注册?
手表的默认最大数量为inotify
是8192;它可以通过写入/proc/sys/fs/inotify/max_user_watches来增加。
您可以使用sysctl fs.inotify.max_user_watches
来检查当前值。
使用tail -f
来验证您的操作系统是否超过inotify
最大值班限制。
tail -f
命令的内部实现使用inotify
机制来监视文件更改。
如果您已经用完了您的inotify
手表,你很可能会得到这个错误:
tail: inotify cannot be used, reverting to polling: Too many open files
参考:
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
我觉得
sudo ls -l /proc/*/fd/* | grep notify
可能是使用你会得到具有PID列表。 inotify fd登记。
我不知道如何获得比这更多的信息! HTH
如果您在工作机器上,无法访问这些文件夹 –
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
以下终端命令在我的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"]
由于这是在高谷歌的结果,我从一个类似的问题在上的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上详细解释过。
默认值是8192,即使这个数字是一个荒谬的低数字,如果你正在做任何重要的inotify。你应该提高价值,并且可能相当多。在我的系统中,我使用的值范围在131072到1048576之间... –
另请参阅:https://unix.stackexchange.com/q/386877/143394 –