2016-09-12 4 views
0

programA.pyとprogramB.pyの2つのプログラムがあります。私はそれらを手動で実行すると、私は別の端末を開き、次のコマンドを入力する必要があります。bashスクリプトとは別のターミナルを必要とする2つのプログラムを起動するには?

terminal1 
python programA.py 

terminal2 
python programB.py 

これらのプログラムは、それぞれ、出力コマンドラインでいくつかのデータを。最後に、programA.pyを完全に開始してからprogramB.pyを開始する前に待機する必要があります(programA.pyが開始され、データを受け入れる準備ができてから2秒かかる)。

これらのプログラムをUbuntuで実行している場合、どのようにすればそれを実現するbashスクリプトを書くことができますか?

#!/bin/bash 
python programA.py 
python programB.py 

これはprogramA.py開始しますが、programA.pyは、入力を待っているので、あなたがprogramA.pyのうち閉じるまで、programB.pyが起動しない:今、私は次のよう持っています。 2つのプログラムを同時に実行するようにスクリプトを変更するにはどうすればよいですか?

編集:

成功し、次の起動二つのプログラムにスクリプトを変更し、以下のアンドレアス・ノイマンによって与えられたアドバイスを使用した:しかし

#!/bin/bash 
python programA.py & 
sleep 5 
python programB.py & 

、両方のプログラムが起動されると、コードはdoesnの正しく動作しません。基本的には、programA.pyはリスニングソケットを設定してから、ユーザーが作業するインターフェースを作成します。その後、programB.pyが起動し、プロセスを実行し、ソケット上でprogramA.pyと通信します。上記のスクリプトを実行すると、programAが起動し、プログラムBが起動し、プログラムAとBが接続してインターフェイスを形成しますが、programBはバックグラウンドプロセスを正しく実行していません。

答えて

1

更新回答あなたは以下の私のオリジナルの答えは動作しません見つける、まだあなたはまだ単一のスクリプトで、あなたの疑問を解決したい場合は、このような何かができ

#!/bin/bash 
xterm -e "python ProgramA.py" & 
sleep 5 
python ProgramB.py 

オリジナル回答

programAの場合これは `programB.py` *すぐに*、一時停止を可能にするために必要なし` programA.pyを開始

{ sleep 5; python programB.py; } & 
python ProgramA.py 
+0

これは構文エラーです '予期しないトークンの近くの構文エラー '}' ' – user3830784

+0

あなたは' bash'を使用していますか?セミコロンを入れましたか? –

+0

'{...}'を '(...に置き換えることができます) ' –

1
#!/bin/bash 
python programA.py & 
sleep 5 # give enough time to start 
python programB.py & 
+0

:ユーザー・インターフェースを作成している、あなたはおそらくそれがフォアグラウンドになり、その背景にprogramBを起動する必要があります'最初に起動する。 – chepner

+0

は、最初の部分を起動できるように更新されました –

+1

'screen'は両方のプログラム出力を見ることができるため、より良いアプローチになります –

関連する問題