fs.inotify.max_user_watches
我不明白设置的最佳方法sysctl
。事实上,除了我需要设置特定进程可以观看的文件数量这一事实之外,我不太了解这里发生的事情。
我相信我可以通过运行以下命令查看最大用户数:
cat /proc/sys/fs/inotify/max_user_watches
我的理解是,有些人建议/proc/sys/fs/inotify/max_user_watches
通过/etc/sysctl.conf
在编辑器中打开并将其添加到其中来进行更改:
fs.inotify.max_user_watches=524288
然后运行sudo sysctl -p
——可能是——处理对文件所做的更改。
其他人建议运行这样的命令:
sudo sysctl -w fs.inotify.max_user_instances=1024
sudo sysctl -w fs.inotify.max_user_watches=12288
我知道它-w
代表“写入”,但是正在写入什么以及在哪里?只是这个命令改变了吗/proc/.../max_user_watches
?
上述两种方法中哪一种最好?我明白524288和12288是不同的数字,但是我不明白运行-p
和运行的效果有什么区别-w
。
答案1
sysctl -w
将内核参数值写入以下相应键/proc/sys
:
sudo sysctl -w fs.inotify.max_user_watches=12288
写入.12288
/proc/sys/fs/inotify/max_user_watches
(这不是等价的,就是这样;有兴趣的读者可以strace
自己看看。)
sysctl -p
从文件加载设置/etc/sysctl.conf
(默认),或者在-p
.
除了参数和写入值的不同来源之外,两种方法之间的区别在于,-w
仅在下次重新启动之前更改参数,而存储在其中的值/etc/sysctl.conf
将在每次系统启动时再次应用。我通常的方法是使用-w
来测试值,然后一旦我确定新设置没问题,将它们写入或(通常)/etc/sysctl.conf
下的文件。/etc/sysctl.d
/etc/sysctl.d/local.conf
请参阅sysctl
和sysctl.conf
手册页(man sysctl
以及man sysctl.conf
您的系统上)了解详细信息。
答案2
find /proc/*/fd -lname anon_inode:inotify |
cut -d/ -f3 |
xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
uniq -c |
sort -nr
查看使用的 inotify 计数。