我尝试在 22.04 上更新
Failed to allocate directory watch: Too many open files
Hit:1 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:2 https://apt.releases.hashicorp.com jammy InRelease
Get:3 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Hit:4 https://deb.nodesource.com/node_18.x jammy InRelease
sysctl fs.inotify.max_user_instances
fs.inotify.max_user_instances = 128
应该是什么sysctl fs.inotify
样子?
涉及目录/文件操作的系统和用户空间应用程序都需要它,以便这些应用程序了解、确认或实现其目标目录/文件更改......例如:更新其缓存包信息时的 APT(即同步)下载压缩档案,它需要等到
close_write
这些档案上报告了一个事件,表明它们已经完成下载并且可以安全地继续提取它们(例如,当并行下载大量这些档案时,这尤其重要)。此外,
它需要系统资源来运行和完成它的(单数形式是为了简化写作,但实际上是多个实例和多个手表)工作……作为这样一个内核子系统,它本质上使它利用了所谓的内核等资源内存是保留给内核使用的总可用系统内存的一部分,并且不受用户空间应用程序的限制,并且它的大小也受到限制......因此,出于必要,使用这个内核必须严格管理内存,不允许某个子系统超越它,从而对系统稳定性产生负面影响……因此,您可以这样查看对 inotify 施加的限制:
如果需要,这些限制实际上(在大多数情况下是安全的)可以增加......如果您在运行新应用程序时看到指示达到限制的错误消息,就像您的情况一样,那么很可能是
fs.inotify.max_user_instances
导致这个......你可以暂时增加它到例如256
这样:这将立即生效,但会在重新启动后重置...建议首先测试系统的稳定性...但是,如果您决定永久需要该设置并在重新启动后仍然存在,那么您可以编辑并添加
/etc/sysctl.conf
它作为这样的新行: