繁体   English   中英

bash:在1个脚本文件中,在不同的终端中同时执行多个命令

[英]bash: in 1 script file execute multiple commands simultaneously in different terminals

我有一个bash脚本文件,其主要目的是(交叉)为多个平台编译二进制文件。 我想要的是在不同的终端中同时执行多个命令(因此要同时启动)。 为了清楚起见,必须从同一(bash).sh文件启动(和关闭)它们。

我尝试了(只是从命令提示符下进行测试):gnome-terminal --title“ terminal 1” -x bash -c“ ssh -t root@192.xyz'echo 1'”

但是没有用; 错误消息:“无法解析参数:无法打开显示:”当然,已安装gnome-terminal。

实际上我想要在(bash)sh文件中是:

(在主终端中运行):命令A; 命令B; 命令C

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

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

当终端2和3结束并关闭时:执行.sh文件的其余部分

您可以利用背景子shell,然后再wait

# A, B, C

(
    # D, E, F
) &

( 
    # G, H, I
) &

wait

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

您的命令很好。 之所以说“无法解析参数:无法打开显示:”,是因为未设置DISPLAY,因此gnome-terminal不知道在何处打开窗口。 您是否正在尝试从ssh或从X外部启动的GNU屏幕会话运行脚本?

如果从ssh运行,则可以使用ssh -X在ssh的客户端上打开终端。 如果在屏幕上运行和/或要在框的第一个显示器上打开gnome-terminal,请在脚本开头export DISPLAY=:0

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM