0

複数のプラットフォーム用にバイナリを (クロス) コンパイルすることを主な目的とする 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 ファイルを実行します。

4

2 に答える 2

0

あなたの命令は大丈夫です。「引数の解析に失敗しました: ディスプレイを開けません:」と表示される理由は、DISPLAY が設定されていないため、gnome-terminal がウィンドウを開く場所を認識していないためです。おそらく ssh からスクリプトを実行しようとしていますか、それとも X の外部で開始された GNU screen セッションから実行しようとしていますか?

ssh から実行している場合は、ssh を実行しssh -Xているクライアントでターミナルを開くために使用できます。画面で実行したりexport DISPLAY=:0、スクリプトの最初のボックスの最初のディスプレイで gnome-terminal を開きたい場合。

サーバー上の別のディスプレイ (NX または VNC セッションなど) で開く場合は、手動でターミナルを開いて、echo $DISPLAYそれがどのディスプレイ番号であるかを確認し、スクリプトで DISPLAY をその値に設定します。

于 2013-01-18T19:52:22.883 に答える
0

バックグラウンド サブシェルを利用してから、次のことを行うことができますwait

# A, B, C

(
    # D, E, F
) &

( 
    # G, H, I
) &

wait

これにより、すべての出力がメイン スクリプトのstdout. サブシェルの出力を個別に保存する場合は、(stuff) > file.log &または(stuff) | tee file.log &for each を使用します。

于 2013-01-18T19:47:16.977 に答える