我有一个bash脚本文件,其主要目的是(交叉)编译多个平台的二进制文件。 我想要的是在不同的终端同时执行多个命令(因此同时启动)。要清楚,必须从相同的(bash).sh文件启动(和关闭)它们。
我尝试过(就像在命令提示符下测试一样): gnome-terminal --title“terminal 1”-x bash -c“ssh -t root@192.x.y.z'echo 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 &
。
答案 1 :(得分:0)
你的命令没问题。它之所以说“无法解析参数:无法打开显示:”是因为未设置DISPLAY,因此gnome-terminal不知道打开窗口的位置。您是尝试从ssh运行脚本,还是从X外部开始的GNU屏幕会话?
如果您是从ssh运行的,则可以使用ssh -X
打开客户端上的终端。如果您在屏幕上运行和/或想要在框的第一个显示屏上打开gnome-terminal,请在脚本的开头export DISPLAY=:0
。
如果要在服务器上的另一个显示器上打开它(例如NX或VNC会话),请在那里手动打开终端echo $DISPLAY
以查看它是哪个显示号码,然后将DISPLAY设置为该值在你的脚本中。