inotify_add_watch -- 失败: "设备上没有剩余空间"

我遇到了一个关于“设备上没有剩余空间”的问题,如下图所示。

enter image description here

我是一个相对新手,对Linux不太了解。我正在使用Ubuntu 18.04。查看了一些关于我的问题的博客,比如这个(建议我增加驱动器大小)和这个(与我的问题相似),也都强调了同样的问题,但没有提供具体的解决方案。
请问你能帮忙提供任何解决方案吗?非常感谢你的关注。
附注:我还截取了df -h的屏幕截图,如下所示enter image description here

2我正在使用qpdfview遇到类似的问题,它使用inotify来监视当前文件。Mint 19显然将默认值设置为8192,而Mint 18则使用了524288。根据答案(谢谢),很容易解决,但是为什么一个应用程序监视一个文件会消耗8192个观察者呢?有没有办法检查还有谁在使用inotify来做这个? - Peter Flynn
4个回答


非常感谢你,Florian Echtler。我解决了。问题出在我家目录下,已经使用了73%的空间,当可用空间低于28%时,Linux会开始发出错误或警告。我删除了一些家目录下的文件,现在没问题了。再次感谢你的帮助。非常感谢。 - Abdul Mannan

增加inotify的监视限制可能对监视大量文件或目录的应用程序是必要的。虽然调整这些限制通常是安全的,但是为了避免潜在问题,务必谨慎操作。以下是一个逐步指南,以安全地增加inotify的监视限制:

检查当前限制

要检查系统上当前的inotify监视限制,请使用以下命令:

cat /proc/sys/fs/inotify/max_user_watches

临时增加

您可以通过在终端中运行以下命令临时增加当前会话的限制:

sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl -p

将文本内容从英文翻译成中文。只返回翻译后的文本内容:

524288替换为您需要的手表数量。

永久增加(用于将来的会话)

要使此更改永久生效:

  1. 编辑/etc/sysctl.conf文件(如果不存在,则在/etc/sysctl.d/中创建一个新文件),使用文本编辑器:

    sudo nano /etc/sysctl.conf
    
  2. 添加或编辑以下行:

    fs.inotify.max_user_watches=65536
    

    65536替换为您所需的值(524288)。

  3. 保存并退出文本编辑器。

  4. 应用更改:

    sudo sysctl -p
    

安全注意事项

  • 增加限制不会本质上损害您的系统。
  • 请注意内存使用情况,因为每个监视器都会消耗一小部分内核内存。
  • 设置过高的值可能会影响性能,因此避免极端增加。

我读过的最好的第一篇回答。 - undefined

监视限制就像是控制在Linux系统上使用inotify功能监视更改的文件夹和文件数量的规则。

例如:想象一下,你有一个监视你房子的安全摄像头系统。它使用inotify来通知你任何移动。但是有一个规则,规定你只能监视最多50个房间(文件夹)。这个规则(监视限制)阻止了一个人试图监视1000个房间,这将是对计算机资源的浪费。

因此,监视限制保持了效率,并防止任何人使用过多的计算机资源来监视inotify中的事物。

我们可以检查:

cat /proc/sys/fs/inotify/max_user_watches

要增加监视限制,我们需要编辑配置文件/etc/sysctl.conf。在文件末尾添加以下行:
fs.inotify.max_user_watches=65536 

运行以应用更改
sudo sysctl -p

这不是磁盘存储空间的问题。我在运行一个Python脚本时遇到了这个错误信息,而当时我还剩下大约100 GB的磁盘空间。之前的用户提出了几个解决方案。对我来说,只要重新启动系统就能停止显示这个错误信息。
谢谢 J