重新附加丢失进程的 X 服务器视图
Posted
技术标签:
【中文标题】重新附加丢失进程的 X 服务器视图【英文标题】:Re-attatching an X server view of a lost process 【发布时间】:2008-11-24 16:47:16 【问题描述】:我正在运行 Xorg,我的 (Qt) 程序会自行守护进程。现在我注销并重新启动 X 服务器。当我再次登录时,我的进程仍然运行良好,但我看不到它。
有没有办法将 X 服务器的新版本附加到旧进程? 如果我不重新启动整个服务器,而是注销并重新登录,有没有办法查看旧进程?
谢谢
【问题讨论】:
【参考方案1】:xpra 应该可以满足您的要求。它还可以启动 tcp 连接(不需要 ssh)。在你的服务器上启动它:
xpra start :100 --start-child=xterm --bind-tcp=0.0.0.0:10000
在您的客户端上连接它:
xpra attach tcp:SERVERHOST:10000
你也可以使用mac或者windows xpra app来连接它。我在win7和osx10.10.2上试过。下载链接:
Windows:https://www.xpra.org/dists/windows/Xpra_Setup.exe 麦克:https://www.xpra.org/dists/osx/x86/Xpra.dmg
【讨论】:
【参考方案2】:与X服务器的连接丢失后,无法恢复。
有一个名为 xmove 的 xserver 代理,但它已被弃用,并且不适用于现代工具包可能使用的几个较新的 X 扩展。
您可以尝试在另一个虚拟 X 服务器中运行您的进程,例如 xvnc 或(更好的)NX。 NX 是 NoMachine 开发的 X 代理技术。 NX 服务器也有免费的实现。 如果您在这样的服务器中运行程序,则可以从任意图形环境中附加和分离它。
【讨论】:
【参考方案3】:这些家伙说有可能,我还没有测试过那个功能......
Check it out !
【讨论】:
这和我写的解决方案一样——在虚拟 X 服务器中启动应用程序。【参考方案4】:使用Xpra 之类的东西:它允许您在屏幕外的 X11 服务器上运行应用程序,您可以在需要时重新连接到该服务器,也可以从远程机器上运行。它也支持“无缝”会话,因此窗口看起来就像本地窗口一样。
实际例子:
xpra start :10 --start-child=/bin/YOURAPP
然后每当您想重新连接时(比如在 X11 服务器重新启动后):
xpra attach :10
或者从远程机器:
xpra attach ssh://THESERVERHOSTNAMEORIP/10
【讨论】:
以上是关于重新附加丢失进程的 X 服务器视图的主要内容,如果未能解决你的问题,请参考以下文章