簡體   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