如何设置和理解fs.notify.max_user_watches

如何设置和理解fs.notify.max_user_watches

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

请参阅sysctlsysctl.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 计数。

相关内容