Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 无法使用'成功断开与远程计算机的连接;诺胡普';或';屏幕';_Bash_Ssh_Nohup_Xterm - Fatal编程技术网

Bash 无法使用'成功断开与远程计算机的连接;诺胡普';或';屏幕';

Bash 无法使用'成功断开与远程计算机的连接;诺胡普';或';屏幕';,bash,ssh,nohup,xterm,Bash,Ssh,Nohup,Xterm,我正在尝试在远程机器上执行一些工作,并在不终止工作的情况下断开连接。我已经试过了nohup和screen,不幸的是它不起作用。在我键入退出后,我的工作也会立即终止 我试图在一台远程机器上运行108次模拟。为此,我编写了一个名为batch.sh的脚本,它一个接一个地运行模拟,直到所有108个都完成。实际运行模拟的程序在5个不同的终端上启动5个程序(使用xterm-e)。我使用以下方法运行batch.sh nohup bash batch.sh& 只要我有联系,一切都很好。如果我断开连接,然后重新连

我正在尝试在远程机器上执行一些工作,并在不终止工作的情况下断开连接。我已经试过了
nohup
screen
,不幸的是它不起作用。在我键入退出后,我的工作也会立即终止

我试图在一台远程机器上运行108次模拟。为此,我编写了一个名为
batch.sh
的脚本,它一个接一个地运行模拟,直到所有108个都完成。实际运行模拟的程序在5个不同的终端上启动5个程序(使用
xterm-e
)。我使用以下方法运行batch.sh

nohup bash batch.sh&

只要我有联系,一切都很好。如果我断开连接,然后重新连接,以检查是否一切都正常工作…没有乐趣:(

我是否忽略了任何警告?可能是因为我的程序在外部终端上启动了其他程序

更新

如果我在启动脚本之前使用将
-oForwardX11=no
添加到
ssh
并取消设置
DISPLAY
的建议,我会收到以下错误:

nohup:忽略输入并将输出附加到nohup.out

nohup.out
中,我有以下消息:

xterm Xt错误:无法打开显示:


xterm:DISPLAY未设置

显然,您的脚本/程序正试图自行启动
xterm
。目前,许多系统默认为其SSH客户端启用X11转发-因此,
DISPLAY
变量在shell会话中设置,但一旦断开连接,该变量将无效。因此,只要当您连接到远程系统时,
xterm
进程可以通过SSH连接访问本地机器上的X服务器,但一旦该连接断开,该进程就会死亡

我偶尔在使用Java AWT子系统生成图像文件的Java程序中遇到同样的问题,即使在没有实际的图形窗口的情况下也是如此。您应该首先看看如果没有可用的X服务器,您的程序是否会以某种方式进行适配。一个选项是使用oForwardX11=no的
-oForwardX11=no
操作禁用X11转发连接到ssh
ssh

$ ssh -oForwardX11=no user@server.host.name
在启动脚本之前,您还可以尝试取消设置
DISPLAY
环境变量,看看会发生什么

但是,如果您的程序不分青红皂白地启动
xterm
windows,则您必须使其运行,例如,在服务器上使用一个输出文件,如有必要,可以对其进行修改。作为一个附加优势,您可以摆脱与转发X连接有关的网络负载和定时开销


如果您无法更改程序的工作方式,并且您实际上并不关心那些
xterm
窗口中的输出,那么您可以尝试在远程系统上启动一个,并让您的脚本将其用于
xterm

我尝试了您的建议(
-oForwardsX11=no
并取消设置
显示
)但这不起作用。
nohup
用nohup回复:忽略输入并将输出附加到nohup.out.In
nohup.out
我有以下消息:xterm Xt错误:无法打开显示:并且xterm:display未设置。事实上,我的脚本正在启动多个
xterm
。我真的需要这些。@cfbaptista:查看我的更新。TL;DR:eitherr修改您的程序,使其不启动
xterm
会话,或使用虚拟X服务器…我可以修改我的程序,但我确实关心
xterm
输出。输出用于日志记录。但是,我不需要在运行时查看输出。只有在完成后,如果出现问题。您能否提供有关什么的更多信息你想让我做什么?@CbCaptista:在这种情况下,你可以将输出附加到一个文件中——可能不止一个——而不是启动一个
xterm
。像这样的问题属于。就在这里。@MartinPrikryl有没有一种简单的迁移方法?或者我必须在那里开始一个新的问题?一旦你有了答案,你必须标记你的问题适度的注意,让它移动。