如何在服务器上启动、分离和附加 X 应用程序

如何在服务器上启动、分离和附加 X 应用程序

在我的服务器上安装 ubuntu-desktop 后,我可以启动一个在服务器上运行的带有 GUI 的程序,并将屏幕转发到我的本地电脑。因此我使用:

someuser@localhost:~$ ssh -X someuser@somehost
someuser@somehost:~$ gedit

我还可以运行、分离和附加基于命令行的程序,例如通过tmux或者屏幕。但如果我想在服务器上长时间运行基于 GUI 的程序,我该如何将两者结合起来?

在这种情况下,我希望首先在本地屏幕上显示程序的图形输出,启动某个进程,然后从本地屏幕上分离图形输出,从服务器注销,让程序运行,再次登录到服务器,最后将图形输出再次附加到本地屏幕。

那可能吗?

答案1

运行 GUI 和文本模式应用程序。

如果你想运行多个应用程序,包括一个 GUI 应用程序和一个文本模式应用程序,我认为你可以这样做,

  • 安慰(连接到服务器的监视器)运行

    • GUI 应用程序“直接”和
    • 终端仿真器窗口中的文本模式应用程序。
  • 远程你跑

    • GUI 应用程序通过ssh -X
    • 文本屏幕应用程序通过ssh

    通过客户端计算机中单独的终端仿真器窗口。


您无法像问题中描述的那样重新连接到带有图形(正在运行的图形)的进程,但您可以在后台运行一个进程并让它继续。您可以使用以下命令行进行测试。如果您注销,它将存活下来,当您再次登录时,您会发现它正在运行。

$ num=0;while true; do echo "$num";num=$((num+1));sleep 1;done > numbers &

检查

$ tail -f numbers

安全

最后,如果服务器可以通过互联网连接,或者由几个人通过 LAN 连接,请考虑@Panther 提出的 GUI 连接的安全性问题。

答案2

不,这实际上是不可能的,因为 X11 的功能方式不允许以这种方式在正在运行的应用程序内断开并重新连接到服务器。

您可以使用 RDP/VNC 之类的东西在服务器上运行完整的会话,您可以在其中从客户端连接和断开与 RDP/VNC 服务器的连接,而使应用程序在远程服务器上打开并运行,这实际上更像 tmux/screen 的工作方式,而不是 ssh -X 的工作方式。

相关内容