2013-01-18 16 views
0

我有一个bash脚本文件,主要目的是为多个平台编译二进制文件。 我想要的是同时在不同的终端执行多个命令(所以同时启动)。要清楚它们必须从相同(bash).sh文件启动(并关闭)。bash:in 1脚本文件在不同的终端中同时执行多个命令

我试图(正如从命令提示符试验): 侏儒末端--title “终端1” -x的bash -c “的ssh -t [email protected] '回声1'”

但没有工作;错误信息:“解析参数失败:无法打开显示:” 当然安装了gnome-terminal。

其实我想在(bash)的SH文件是:

(主接线运行):命令A;命令B;命令C

同时: (在终端2中运行):命令D,命令E;命令F(然后关闭终端)

在同一时间 (在终端3中运行):命令G,命令H;指令I(然后关闭终端)

当终端2和3是成品和封闭:执行sh文件的其余部分

+0

您是否需要实际的窗口或进程就够了? –

回答

0

可以利用背景子shell然后wait

# A, B, C 

(
    # D, E, F 
) & 

( 
    # G, H, I 
) & 

wait 

请注意,这会将所有输出发送到主脚本的stdout。如果要分别保存子壳的输出,请分别使用(stuff) > file.log &(stuff) | tee file.log &

+0

我想从shell脚本文件(ssh模式)执行它,然后在更多终端中同时打开并执行,然后关闭这些“额外”终端并返回到主终端。所以没有文件保存等。 –

+0

我只提出重定向,以防您希望单独保存这些命令的输出。如果背景子壳不足,并且由于某些原因需要不同的窗口,请参阅@ thatotherguy的答案。 –

0

你的命令很好。之所以说“无法解析参数:无法打开显示:”是因为DISPLAY没有设置,所以gnome-terminal不知道在哪里打开一个窗口。你可能试图从ssh或者从X之外开始的GNU屏幕会话运行脚本?

如果您使用ssh运行,您可以使用ssh -X在ssh客户端上打开终端。如果您在屏幕上运行并且/或者想要在该框的第一个显示屏上打开gnome-terminal,请在脚本的开头输入export DISPLAY=:0

如果要在服务器上的另一个显示器上打开它(例如NX或VNC会话),请在该处手动打开终端,echo $DISPLAY以查看它的显示编号,然后在脚本中将DISPLAY设置为该值。

+0

Tnx。我正在/从ssh终端会话中运行脚本。 –

+0

对不起,我不知道如何实现/使用-X,因为 gnome-terminal --title“terminal 1”-x bash -c“ssh -t [email protected]。z'echo 1'-X“ 没有任何作用 –

+0

SSH -X可以工作,但它会在同一个窗口中打开另一个SSH会话,我使用putty通过SSH登录,然后运行shell脚本 –

相关问题