我正在运行 Ubuntu 14.04,当尝试使用选项将目录与 unison 同步时repeat=watch
。该目录包含~125K
文件,但我接近 unison 可以处理的文件数量的限制。这是我收到的错误:
严重错误:服务器:文件系统观察器错误:无法添加观察器:已达到系统限制。
可以通过将首选项“watch”设置为 false 来禁用观察器。
我通过运行 unison 来搜索更多信息debug=all
,但这些是我能找到的与该错误相关的唯一行。
您是否知道需要更改哪些系统设置才能解决此限制?
答案1
我相当肯定问题不在于 Unison,而在于inotify
。当您使用 选项时repeat=watch
,Unison 会调用一个辅助程序unison-fsmonitor
,该程序用于inotify
监视文件系统的更改。它会将一个“手表“在您使用 Unison 同步的每个文件上。
默认情况下,手表单个用户可以唤起。在我的机器上,上限只有 8192。您可以通过编辑文件来增加监视数量
/proc/sys/fs/inotify/max_user_watches
我有点担心,因为你想要观看大约 125k 个文件,而默认最大值只有大约 8k,如果你将最大值增加那么多,你可能会看到性能急剧下降。
答案2
Unison 使用三种文件。最相关的文件是配置文件,扩展名为 prf,默认存储在 .unison 中。每个配置文件指定与 unison 的特定用途相关的变量和首选项,例如应同步的目录以及用于执行此同步的机制。或者,可以在命令行中指定这些首选项。unison 使用的第二种文件是日志文件。事实上,unison 通常会生成其活动的详细说明。此说明保存在日志文件中,默认情况下该文件名为 unison.log,并放置在用户的主目录中。最后,为了确定已修改并需要更新的文件,unison 使用自动命名的存档文件,默认情况下该文件存储在 .unison 中。
文件: ~/.unison/home.prf
答案3
您可以将该行添加watch = false
到您的 unison 配置文件中,它应该可以工作,尽管没有观察者的“好处”。