📜  _configure 中的 escue:无法监视目录的更改,因为 iNotify 已超出最大监视次数. - Javascript(1)

📅  最后修改于: 2023-12-03 15:13:14.366000             🧑  作者: Mango

监视目录更改失败 - iNotify 已超过最大监视次数

在开发过程中,我们经常需要监视某些目录的变化来使应用程序实时响应。这是通过使用 iNotify 工具来实现的。然而,在某些情况下,当我们试图监视一些过于频繁的目录时,会出现以下错误提示:

_configure 中的 escue:无法监视目录的更改,因为 iNotify 已超出最大监视次数. - Javascript

这意味着我们已达到了 iNotify 的最大监视次数,并且无法再继续监视更多的目录。这个问题还有另一个表现形式:iNotify 会停止响应而导致程序中断。

原因

iNotify 工具的实现是基于 Linux 操作系统的。在 Linux 内核中,有一个参数可以设置最大允许 iNotify 监视的目录数。当我们试图监视过多的目录时,即使我们允许使用 iNotify 工具,也会出现以上错误信息。这是由于系统资源不足,iNotify 舍弃了一些文件的监视权限。

解决方案
方案一:提高 max_user_watches 限制

为了解决这个问题,我们需要提高系统限制,让 iNotify 可以监控更多的目录。我们可以通过以下命令来修改 max_user_watches 参数:

sudo sysctl fs.inotify.max_user_watches=524288

上面的命令将 max_user_watches 参数的值增加到了 524288。您也可以将该值设为更大的数值,具体了取决于应用程序的需要。

要将此参数的更改永久保存在系统中,请为该值创建新的配置文件并在其中设置该值。在 Ubuntu 中,我们可以执行以下命令完成。

echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
方案二:减少目录监视

如果我们无法增加 max_user_watches 参数的值,则还可以通过减少我们需要监视的目录数量来解决该问题。这需要我们重新评估我们应用程序的需求并定期清理不必要的目录监视。

结论

无论您决定提高 max_user_watches 参数还是减少需要监视的目录数量,您都应该定期评估监视的效率,以确保程序的顺畅运行。