我正在运行 Xorg 并且我的 (Qt) 程序会自行守护进程。现在我注销并重新启动 X 服务器。当我再次登录时,我的进程仍然运行良好,但我看不到它。
有没有办法将 X 服务器的新化身附加到旧进程?如果我不重新启动整个服务器,而是注销并再次登录,有没有办法查看旧进程?
谢谢
xpra 应该可以满足您的要求。它还可以启动 tcp 连接(不需要 ssh)。在您的服务器上启动它:
xpra start :100 --start-child=xterm --bind-tcp=0.0.0.0:10000
将其连接到您的客户端:
xpra attach tcp:SERVERHOST:10000
您也可以使用 mac 或 windows xpra 应用程序来连接它。我在win7和osx10.10.2上试过。下载链接:
windows:https ://www.xpra.org/dists/windows/Xpra_Setup.exe mac:https ://www.xpra.org/dists/osx/x86/Xpra.dmg
使用Xpra之类的东西:它允许您在屏幕外 X11 服务器上运行应用程序,您可以在需要时重新连接到该服务器,也可以从远程机器上运行应用程序。它也支持“无缝”会话,因此窗口看起来就像本地窗口一样。
实际例子:
xpra start :10 --start-child=/bin/YOURAPP
然后每当您想重新连接时(比如在 X11 服务器重新启动后):
xpra attach :10
或者从远程机器:
xpra attach ssh://THESERVERHOSTNAMEORIP/10
与 X 服务器的连接丢失后,将无法重新连接。
有一个名为 xmove 的 xserver 代理,但它已被弃用,并且不能与现代工具包可能使用的几个较新的 X 扩展一起使用。
您可以尝试在另一个虚拟 X 服务器中运行您的进程,例如 xvnc 或(更好的)NX。NX 是 NoMachine 开发的 X 代理技术。NX 服务器也有免费的实现。如果您在这样的服务器中运行程序,则可以从任意图形环境附加和分离它。
这些家伙说这是可能的,我还没有测试过那个功能......