我可以ssh
访问我自己安装了 Ubuntu 13.10 的服务器。
通过ssh
我可以使用这种方法启动 GUI 应用程序:
$ ssh -X my_login@address_of_sever
Run Code Online (Sandbox Code Playgroud)
之后,我可以按名称启动任何应用程序,例如
gedit
, firefox
, google-chrome
,它将在我的客户端机器上打开(只是窗口,实际上应用程序在远程机器上运行 - 即在服务器上)。
这一切都很好。
但是当我关闭客户端机器上的 GUI 应用程序时,它也会在服务器上关闭(这似乎是合法的)。
我可以使用以下命令启动控制台应用程序:
$ nohup php somefile.php &
Run Code Online (Sandbox Code Playgroud)
关闭连接后它将继续工作。
我想知道,是否可以对 GUI 应用程序做同样的事情?
理想情况下,如果有可能将打开的窗口移动到服务器并在需要查看那里发生的事情时将其带回客户端,也许是某种切换?
“要在远程系统上启动一个应用程序(在这个例子中是一个简单的 xterm)并将它显示在你的本地机器上,只需运行:
Run Code Online (Sandbox Code Playgroud)xpra start ssh:SERVERHOSTNAME:100 --start-child=xterm
这与 ssh -X 类似,但它更快,并且您可以根据需要多次断开连接并重新连接到会话。(显然 xpra 必须安装在您的服务器主机上)要重新连接或从另一台机器连接到此会话,请使用 attach 命令(您也可以使用 xpra_launcher GUI):
Run Code Online (Sandbox Code Playgroud)xpra attach ssh:serverhostname:100
据我所知,可以通过这种方式恢复 GUI 应用程序的唯一方法是在远程服务器的桌面上启动该应用程序,然后使用 VNC 等应用程序远程连接到远程系统的桌面。然后,您可以中断此连接并根据需要恢复它。
我不知道有什么方法可以恢复 GUI 应用程序,该应用程序远程显示到本地桌面。
对于控制台应用程序,您可以使用控制台管理器(例如screen
或 )tmux
来恢复这些连接,或者在用于启动它们的 SSH 连接断开时让它们保持不变,然后在稍后重新建立。