尽管将监视计数设置为更高的值,但仍不断收到“设备上没有剩余空间或超过 fs.inotify.max_user_watches”的信息

尽管将监视计数设置为更高的值,但仍不断收到“设备上没有剩余空间或超过 fs.inotify.max_user_watches”的信息

我正在尝试运行bitbake命令来构建图像,但看到以下错误

ERROR: No space left on device or exceeds fs.inotify.max_user_watches?
ERROR: To check max_user_watches: sysctl -n fs.inotify.max_user_watches.
ERROR: To modify max_user_watches: sysctl -n -w fs.inotify.max_user_watches=<value>.
ERROR: Root privilege is required to modify max_user_watches.

运行一个脚本来确定哪个进程有多少个监视计数,我得到以下信息:

   INOTIFY
   WATCHER
    COUNT     PID     CMD
----------------------------------------
   11978    15732  /snap/sublime-text/97/opt/sublime_text/plugin_host 15717 --auto-shell-env
   11978    15717  /snap/sublime-text/97/opt/sublime_text/sublime_text
      51    10165  /usr/lib/unity-settings-daemon/unity-settings-daemon
      12     1759  /usr/lib/gvfs/gvfsd-trash --spawner :1.6 /org/gtk/gvfs/exec_spaw/0
...

运行以下命令会返回大于设置的最大监视计数,11978但我仍然看到相同的错误。

$ sysctl -n fs.inotify.max_user_watches
12288

还有什么我应该调查的吗?

答案1

如果您使用 VS Code Remote-SSH,则会出现此错误,要防止此错误,只有一个选项关闭 VS Code 或尝试使用 files.watcherExclude 设置从文件观察器中排除大文件夹。

https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc

答案2

下面链接中的解决方案为我解决了这个问题:

https://forum.proxmox.com/threads/error-no-space-left-on-device.27809/post-141252

总之:

检查当前限制:
cat /proc/sys/fs/inotify/max_user_watches

对我来说这是 64000

暂时测试增加值是否可以解决问题:(这将在下次重新启动时重置为默认值 8192)
echo 1048576 > /proc/sys/fs/inotify/max_user_watches

请记住,每个大小约为 1k,这会将手表的 RAM 消耗从 ~8MB 增加到 ~1GB。您可能不需要这么大。尝试更小的东西以节省 RAM。

如果上述方法使问题消失,我们现在可以通过重新启动使其永久化:
编辑/etc/sysctl.conf

nano /etc/sysctl.conf

添加以下行(或编辑它,如果已经存在)
fs.inotify.max_user_watches=128000

如上所述,编辑 128000 值以满足您的需求

重新启动,或执行以下操作:
sysctl -p /etc/sysctl.conf

相关内容