我在新安装的 ubuntu 14.04 中启动应用程序时一直遇到问题。基本上,一切都会正常运行一段时间,但当我尝试打开某些应用程序(例如 ghome 计算器)时,它们不会启动。但是,如果我尝试从终端启动它们,我会收到如下错误:
Maximum number of clients reached
** (gcalctool:19516): WARNING **: Could not open X display
Maximum number of clients reached Cannot open display:
Use 'gnome-calculator --help' to display help.
到目前为止,Nemo、Gnome Calculator 和 Libre Office 都出现了这种情况
我怎样才能消灭这些幽灵客户端?
我应该从哪里开始解决这个错误?
答案1
Chrome 的数字似乎很正常(来自你的 pastebin)。我认为你应该看看 slack。github 上有几个关于这个问题的未解决的问题,比如随着时间的推移,Electron 会泄漏 Xorg 连接,并且在每个桌面通知上都会导致 Xorg 停止接受客户端。回复说应该在 1.2.4 版本中修复Slack 网站
答案2
在另一个线程中,这对我有帮助!
sudo ss -x src "*/tmp/.X11-unix/*" | grep -Eo "[0-9]+\s*$" | while read port
do sudo ss -p -x | grep -w $port | grep -v X11-unix
done | grep -Eo '".+"' | sort | uniq -c | sort -rn
- ss 是一个调查套接字的工具
sudo ss -x src "*/tmp/.X11-unix/*"
列出与 x11 绑定的呼叫。grep...
然后抓取端口号while read port
意味着获取给定的端口号并将其提供给...sudo ss -p -x | grep -w $port | grep -v X11-unix done
它将 grep 这些绑定到 x11 的端口,给出进程的名称,然后sort | uniq -c | sort -rn
根据系统给定套接字中存在的数量按降序对它们进行排序。
简化版本显示了向系统打开最多套接字的前 10 个进程。
sudo ss -p -x | grep -Eo '".+"' | sort | uniq -c | sort -rn | head -n 10
通过了解哪个进程占用了系统中最多的套接字,您可以简单地将其终止。例如,killall process_name
这将释放系统中的套接字以供其他程序使用。Linux 系统中的套接字数量是有限的(但您可以更改其数量 - 请参阅链接)。