![](/img/trans.png)
[英]batch file commands in powershell execute in a different command prompt
[英]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.