net/C#在Linux中使用FileSystemWatcher的限制

问题: 一些linux系统默认inotify 实例数量小于需要监视的文件数,导致FileSystemWatcher不工作,且不异常。

Linux 内核对 inotify 实例数量和资源消耗有一定的限制。如果系统中使用了大量的 inotify 实例,可能会达到内核的资源限制,从而导致无法创建更多的 inotify 实例。

解决:

改变linux系统的inotify 实例数量

临时改变重启失效:echo 102400 | sudo tee /proc/sys/fs/inotify/max_user_watches

永久改变,需重启不失效
1.打开文件sudo vi /etc/sysctl.conf
2.添加一行fs.inotify.max_user_watches = 524288
3.使其生效sudo sysctl -p
4.查看
sysctl fs.inotify.max_user_watches

cat /proc/sys/fs/inotify/max_queued_events

cat /proc/sys/fs/inotify/max_user_watches

cat /proc/sys/fs/inotify/max_user_instances

其它问题:

局部的FileSystemWatch变量当工作一段时间会被回收??不工作。

解决:

改变变量为属性或字段;