我最近收到了数百个类似这样的错误:
Jan 20 13:21:01 server2 gvfsd[4093]: daemon: Error creating server at address
unix:abstract=/dbus-vfs-daemon/socket-jOhPfYdB:
Unable to create socket: Too many open files
我检查了打开的文件句柄,似乎没有什么特别令人反感的。无论如何提高限制,都没有什么区别。重启后会消失一段时间,但很快就会再次启动。
也许与此有关,我经常无法使用文件管理器浏览垃圾箱。(我使用的是 PCManFM)。它会弹出一个对话框,提示“打开的文件太多”。如果我关闭它,gvfsd-trash
它可能会重新开始工作。不过,即使垃圾箱正在工作,错误仍然会不断出现在日志中。
我对 eoan 非常了解。这是最近才发生的,但我无法将其与任何特定更新或软件安装联系起来。
答案1
我遇到了同样的问题,我发现打开文件!=文件描述符。
我lsof
报告了 600,000 个文件,其中一半是 gecko (firefox)。关闭 firefox 会将它们减少到 150,000 个,但对 gvfsd 无法打开套接字没有任何影响。
现在,如果你发出如下命令:
ls -1 /proc | \
grep \[0-9\]| \
sed "s,.*,printf 'process %10d uses file descriptors: ' & ;sudo ls -l /proc/&/fd | wc -l," | \
bash | \
sort -h -r -k 6 | \
head
我不是 Linux 脚本专家,所以这远非完美
此命令用于计算当前正在运行的任何 PID 的 FD
您将看到大多数进程使用最大值 50。只有gvfsd
设置的最大值是 1024。ulimit
所以也许提高 ulimit 可以解决问题。也许不行 ;)
gvfsd
是用户进程,并且允许用户将 ulimit 设置为 max ulimit -Hn
。因此临时提高限制就像发出 一样简单ulimit -n 2048
。但这只会影响当前 shell。您必须将其添加到~/.bashrc
。编辑:不起作用。我到底在哪里定义 gvfsd 的 ulimit?
附言:我没有遇到 100% CPU 问题,除非磁盘上有文件在不断变化(例如下载电影等较大的文件)。不知道这是否相关。