Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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脚本在远程Linux机器上启动进程,并使其与启动服务器分离_Linux_Bash_Shell - Fatal编程技术网

Bash脚本在远程Linux机器上启动进程,并使其与启动服务器分离

Bash脚本在远程Linux机器上启动进程,并使其与启动服务器分离,linux,bash,shell,Linux,Bash,Shell,我对Linux(Red Hat)是新手,我正在尝试自动化我为基于GUI的软件设计的茄子测试。这将每晚运行 我将在服务器001上运行基本脚本。它将把我们软件的最新版本复制到一台作为测试台的远程PC上,然后在测试台上启动一个Bash脚本,配置环境,然后启动软件。 我试过: sshtest@111.111.111.002“bash-s”file.txt”??不,我只想运行启动脚本,就像用户坐在远程工作站上一样。茄子测试系统位于第三台服务器上,通过x11vnc连接连接到远程测试站。您需要-X?如果需要打

我对Linux(Red Hat)是新手,我正在尝试自动化我为基于GUI的软件设计的茄子测试。这将每晚运行

我将在服务器001上运行基本脚本。它将把我们软件的最新版本复制到一台作为测试台的远程PC上,然后在测试台上启动一个Bash脚本,配置环境,然后启动软件。 我试过:

sshtest@111.111.111.002“bash-s” sshtest@111.111.111.002'bash-s testConfig.shtestConfig.log 2>&1&'

ssh-Xtest@111.111.111.002'testConfig.sh'


第一个测试失败,第二个尝试启动软件,但它没有在测试台上运行,而是尝试在服务器上运行。当然,对于第三个,它打开服务器上的窗口并运行软件;但我需要的是测试台上的显示器,而不是服务器。

请尝试下面的内容,并让我们知道。使用双引号而不是单引号

sshuser@1.1.1.1“bash-s”

确保testConfig.sh位于您正在ssh的目录中,否则请使用绝对路径名,例如/home/qwe/testConfig.sh


如果有错误,也请提一下。

一位同事碰巧路过,看到了我的困难,提出了这个建议,并且成功了:

sshuser@1.1.1.1'setenv DISPLAY:0.0&&testConfig.sh'


是否要将输出重定向到某个文件。类似于ssh-X的东西test@111.111.111.002“testConfig.sh>>file.txt”??不,我只想运行启动脚本,就像用户坐在远程工作站上一样。茄子测试系统位于第三台服务器上,通过x11vnc连接连接到远程测试站。您需要
-X
?如果需要打开X11隧道以运行程序,则无法根据定义进行分离:一旦SSH连接断开,X连接就会断开……要使用其中一个较早的隧道,您需要配置显示和(可能的)X权限设置,以指向您希望它指向的测试台X服务器。该配置是特定于主机的,并且有点超出了堆栈溢出的范围。我尝试过使用-X,但最终在错误的计算机上运行了显示。但是它出现的机器也在我们的Windows网络上,我不想在夜间测试中使用这种交叉。一位同事建议像你建议的那样添加“DISPLAY”选项(见下文),效果很好。
“bash-s”
“bash-s”
之间没有任何区别;它们都转换为完全相同的C字符串,因此当
ssh
启动时,它甚至无法分辨这两个字符串中使用了哪一个。如果
setenv
有效,则使用的是csh,而不是bash——它们完全不同(彼此不兼容)shell。