2013-01-18 17 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腳本 –

相關問題