在 VNC 或 RDP 会话中启动 Linux GUI 应用程序以供稍后访问

在 VNC 或 RDP 会话中启动 Linux GUI 应用程序以供稍后访问

使用 BASH 脚本,我需要在启动时启动 GUI 应用程序,以便稍后可以通过 RDP 或 VNC 连接并查看应用程序的运行情况。例如,脚本将在启动时运行并启动给定的基于 GUI 的分析应用程序。稍后,我需要随时使用 RDP/VNC 查看应用程序的进度并与其交互。

到目前为止,我在 EC2 上运行的 Ubuntu Server 12.04.1 上使用 LXDE。

答案1

根据基于 GUI 的应用程序是否需要自启动以来运行,有两种不同的方法:

  • 所讨论的应用程序不仅是前端,还执行实际工作。在这种情况下,您需要一个暴发户脚本来启动应用程序,并且还配置了 VNC 或 RDP 服务器以从启动脚本运行。这不是一种安全的方法。
  • 应用程序只是一个 Web 前端。在这种情况下,您可以通过 SSH 隧道按需启动应用程序,效果会更好,前提是您X11Forwarding在 ssh 配置中启用了此功能。然后它就像ssh -X user@host 'gui-app'

答案2

啊,我们有几种方法可以做到这一点。据我所知,你实际上有两个问题。

问题 1:如何在启动时启动 bash 脚本?
答案 1a:以 root 身份创建 upstart 启动脚本,请参阅 upstart 文档
答案 1b:选项 2 为没有 root 访问权限的用户。创建一个每 5 分钟运行一次的 cron 作业,以检查 bash 脚本是否尚未运行,如果尚未运行,则启动该进程。

问题 2:如何在 VNC/RDP 中启动应用程序?
答案 2:RDP 未得到很好的支持。VNC 不是很安全,但如果你坚持的话。手动启动一次 vnc 服务器,设置密码。这还将为配置创建 .vnc 目录。现在编辑 .vnc/xstartup 并添加程序/bash 脚本的启动。

回到答案 1a+b,您应该将 vncserver 的启动添加为启动项,而不是脚本本身。然后,vncserver 的启动将启动该应用程序一次。

cron示例:
*/5 * * * * pgrep -u $USER vncserver > /dev/null || vncserver -geometry 1024x768

上述脚本的执行范围各不相同。请随意添加更多内容。

答案3

upstart 可以工作,远程 GUI 访问的唯一其他东西是 xRDP。以下是安装和配置它的链接:http://www.1337admin.org/linux/ubuntu/installing-rdp-server-on-ubuntu-13-10/

相关内容