我有ssh-ed到远程机器。我启用了X11转发(ssh -X),我已经启动了一个GUI程序。
该程序需要5分钟设置进行一些处理,但实际处理需要1-2个小时。我不想在程序运行时传输数据。我甚至不想再看到程序,因为它在完成时会生成文件作为输出,我只能scp它们。
那么如何退出ssh会话但让程序在机器上运行呢?终端的CRTL + C?
编辑:有关答案,请参阅下面的评论。
我有ssh-ed到远程机器。我启用了X11转发(ssh -X),我已经启动了一个GUI程序。
该程序需要5分钟设置进行一些处理,但实际处理需要1-2个小时。我不想在程序运行时传输数据。我甚至不想再看到程序,因为它在完成时会生成文件作为输出,我只能scp它们。
那么如何退出ssh会话但让程序在机器上运行呢?终端的CRTL + C?
编辑:有关答案,请参阅下面的评论。
长话短说 - 如果不对运行方式进行一些修改,就无法做到这一点。 GUI应用程序要求X服务器目标接受它的GUI更新 - 如果您使用本地X服务器执行此操作,那么它将要求(1)连接打开(2)您实际处理更新。
解决这个问题的方法是使用类似的东西 XVFB - 这是一个无头的主持方式 虚拟 X服务器。除了维基百科页面上提供的示例之外,似乎经常使用此机制的人是 硒 用户。
真棒,我一直在寻找一个可以接受的答案来解决我的问题几个小时,最后一个弹出。 ssh -X -f登录@ machine yourprogram对我来说非常合适。虽然我使用了ssh -Y -f login @ machine yourprogram。这让我疯了。
就像有些人说的那样,SSH -X正在使用你的本地X服务器,所以它需要连接。我有同样的问题,想退出ssh但是让GUI应用程序运行。为此,我在远程主机上安装了X服务器和VNC服务器。使用本地计算机上的VNC客户端,您可以轻松连接到VNC服务器并断开连接GUI应用程序的运行。
顺便说一句,使用VNC或X2Go可以获得更好的性能。在我的情况下,Firefox非常慢,有些网站根本没有使用SSH -X加载,即使使用-Y或-C优化也是如此。
运行 ssh -X -f login@machine yourprogram
应该做的伎俩。
用你的程序启动程序 nohup program &
只需关闭终端即可安全 - 程序仍将运行。
在结束ssh会话后,您将无法看到UI,但是因为您无论如何都不需要它 - 它将完成这项工作。