问题 使用正在运行的GUI程序退出ssh -X会话,但让程序在远程主机上运行


我有ssh-ed到远程机器。我启用了X11转发(ssh -X),我已经启动了一个GUI程序。

该程序需要5分钟设置进行一些处理,但实际处理需要1-2个小时。我不想在程序运行时传输数据。我甚至不想再看到程序,因为它在完成时会生成文件作为输出,我只能scp它们。

那么如何退出ssh会话但让程序在机器上运行呢?终端的CRTL + C?

编辑:有关答案,请参阅下面的评论。


7811
2018-03-05 19:11


起源

好的,所以我偶然发现了我认为最简单的方法。我正在阅读有关屏幕的内容,我发现您可以使用屏幕实用程序分离并注销,使远程计算机上的进程保持运行状态。之后,您可以登录并重新附加。 - s5s
一个人可以使用 xpra 适用于X程序 screen 对于终端程序:在它下启动X程序,分离/重新连接。 - en.wikipedia.org/wiki/Xpra - imz -- Ivan Zakharyaschev


答案:


长话短说 - 如果不对运行方式进行一些修改,就无法做到这一点。 GUI应用程序要求X服务器目标接受它的GUI更新 - 如果您使用本地X服务器执行此操作,那么它将要求(1)连接打开(2)您实际处理更新。

解决这个问题的方法是使用类似的东西 XVFB  - 这是一个无头的主持方式 虚拟 X服务器。除了维基百科页面上提供的示例之外,似乎经常使用此机制的人是  用户。


10
2018-03-05 19:32



一个人可以使用 xpra 同样:在它下面启动X程序,分离/重新连接。 - en.wikipedia.org/wiki/Xpra - imz -- Ivan Zakharyaschev
没有听说过xpra,非常酷 - 就像X应用程序的屏幕一样。这听起来像是适合OP的账单。 - synthesizerpatel


真棒,我一直在寻找一个可以接受的答案来解决我的问题几个小时,最后一个弹出。 ssh -X -f登录@ machine yourprogram对我来说非常合适。虽然我使用了ssh -Y -f login @ machine yourprogram。这让我疯了。


2
2017-12-08 16:09



您可以撰写评论,而不是在答案中说出所有这些内容。 - Naddy


就像有些人说的那样,SSH -X正在使用你的本地X服务器,所以它需要连接。我有同样的问题,想退出ssh但是让GUI应用程序运行。为此,我在远程主机上安装了X服务器和VNC服务器。使用本地计算机上的VNC客户端,您可以轻松连接到VNC服务器并断开连接GUI应用程序的运行。

顺便说一句,使用VNC或X2Go可以获得更好的性能。在我的情况下,Firefox非常慢,有些网站根本没有使用SSH -X加载,即使使用-Y或-C优化也是如此。


1
2017-07-25 17:58





运行 ssh -X -f login@machine yourprogram 应该做的伎俩。


0
2018-03-05 19:18



但是它不会让ssh会话退出,它会在后台打开,还是......? - Oleg Mikheev
是的,它将在后台激活。没有它,您将无法与您开始的应用程序通信。 - Michał Kosmulski


用你的程序启动程序 nohup program & 只需关闭终端即可安全 - 程序仍将运行。

在结束ssh会话后,您将无法看到UI,但是因为您无论如何都不需要它 - 它将完成这项工作。


0
2018-03-05 19:19