我有一台正在运行的台式机Debian 8.0我有权ssh
访问。我在这台计算机上远程运行图形应用程序,因此我只需将桌面会话保持打开状态,ssh
进入计算机,然后运行:
DISPLAY=:0.0 ./my-application
不幸的是,机器最近重新启动并且我的桌面会话结束,因此我无法DISPLAY
再访问它,因为它当前显示 的登录屏幕kdm-greet
。
是否有一种机制可以远程登录图形会话,或者启动第二个会话DISPLAY
来运行我的应用程序?请注意,我无法进行 X11 转发来使用我的本地显示器。
答案1
如果您不需要与程序交互(但由于某种原因它仍然需要 X 服务器),您可以使用 XvFB - 虚拟帧缓冲区显示。我发现这对于在构建机器上运行我的 UI 程序非常有用(主要是自动测试,并以多种语言生成产品屏幕截图)。
在大多数发行版上,它的形式如下xvfb
:
描述:虚拟帧缓冲区“假”X 服务器
Xvfb 提供了一个 X 服务器,可以在没有显示硬件和物理输入设备的机器上运行。它使用虚拟内存模拟哑帧缓冲区。该服务器的主要用途是服务器测试,但也发现了它的其他新颖用途,包括针对不寻常的深度和屏幕配置测试客户端、使用 Xvfb 作为后台渲染引擎进行批处理、负载测试(作为辅助)将 X 服务器移植到新平台,并提供一种不引人注目的方式来运行实际上不需要 X 服务器但无论如何都需要一个 X 服务器的应用程序。
该软件包还包含一个名为 的便捷脚本,
xvfb-run
它可以简化虚拟服务器环境中 X 客户端的自动执行。这个方便的脚本需要使用该xauth
程序。
答案2
安装 VNC 服务器,例如 TigerVNC。以root身份启动它,转发端口(这不是X11转发,所以你应该能够做到这一点,除非他们单独禁止它),然后连接到它。您应该看到登录屏幕。登录。然后,运行DISPLAY=:0.0 ./my-application
应该可以正常进行,此时,就像您在本地登录一样。
或者,如果您没有 root 权限,则可以使用不同的 VNC 服务器(例如 vnc4server),它会创建一个新的 DISPLAY,而不是附加到现有的 DISPLAY。然后只需使用它为您的程序提供的任何数字即可。