作为我工作的一部分,我使用几个不同的 nodejs 实时服务器,我的工具/工作流程中似乎存在某种泄漏,导致文件观察者随着时间的推移而积累,直到它们达到系统限制。然后我得到以下cli错误:
Error from chokidar (<path-to-folder>): Error:
ENOSPC: System limit for number of file watchers reached, watch '<path-to-folder>/<filename>'
我发现以下命令应该返回使用的诡计观察者的数量:
find /proc/*/fd -user "$USER" -lname anon_inode:inotify -printf '%hinfo/%f\n' 2>/dev/null | xargs cat | grep -c '^inotify'
它返回 515160,即使我似乎已经关闭了所有实时服务器。我有两组问题:
- 我该如何诊断?我可以获得所有已注册观察者的列表、他们的观察路径和相应的 PID 或类似的东西吗?
- 有没有办法让我把他们都杀了?杀死所有文件观察者是个好主意吗?我可以只杀死我的服务器注册的观察者吗?
我正在运行 Debian 11