我正在开发一个守护进程,它通过inotify监视文件事件,以便在访问文件时触发各种类型的事件.我已经读到,手表有点贵,因为内核存储的是被监视的每个文件的完整路径名.

多少块手表就太多了?

编辑:大多数情况下,我想知道..你有没有看到过明显的性能下降,如果是的话,有多少手表出现了这种情况?是的,我必须监视/递归(不过这是一个最小的自举系统).

推荐答案

/proc/sys/fs/inotify/max_user_watchescurrent个手表的最大数量per user个.

从历史上看,内核默认设置为8192,但考虑到许多Linux发行版都对内核构建进行了大量定制,这在每个Linux系统上可能都不是真的.最近的内核更改[1]根据系统的RAM容量动态 Select [81921048576]范围内的默认值max_user_watches.(5.11是包含此更改的第一个内核版本.)

AFAICT,root可以将max_user_watches更改为2147483647(231-1)或以下的任何值,只要您确信您有足够的RAM支持该数量的手表.

[1] https://github.com/torvalds/linux/commit/92890123749bafc317bbfacbe0a62ce08d78efb7

Linux相关问答推荐

在shell 中使用排除模式的grep

仅使用Find搜索32字符长的目录

如何在Linux上获取clang中的模板实例化统计?

如何将一个变量的 2 行添加到另一个变量的特定行?

为什么`__vfprintf_internal`(`stdio.h`中的`printfn`)强制`$rbp`在我的x86-64机器上向前跳转6313864字节?

Rust unix 进程

Linux 如何使用 PCID 的值?

在android上使用lldb-server进行lldb调试?

Azure Nvidia 中的 apt-update 给出公钥错误

如何在 AWS Linux 服务器上实现虚拟主机?

如何忽略 diff 命令中的一些差异?

为什么我不能将 Unix Nohup 与 Bash For 循环一起使用?

通过写入 /dev/input/mice 来控制鼠标

将以前忽略的目录添加到 Git 存储库

与交换空间相关的链接器性能?

如何在不重新打印的情况下更新终端中的打印消息

bash 中的线程?

根据日期范围过滤日志(log)文件条目

命令列出除 . (点)和..(点点)

给定一个 linux 用户名和密码,我如何测试它是否是有效帐户?