2017-08-22 14 views
-1

私は状況があります。イメージこのコマンドの最後に、dbサーバーを起動する最初のコマンドを実行します。一部のポートでサスペンドとリッスンを行います。そして、私は最初のコマンドからデータベースに接続するためにいくつかのWebサーバーを起動する2番目のコマンドを持っています。今最初のコマンドが中断されたときの最初のコマンドの終了に依存する2番目のコマンドの実行方法

私はこの単純なコマンドを記述する方法がわからない、試してみました:Aがサスペンドに入るとき、Bが実行されないので、私はCtrlキーを入力すると、動作しません

A ; B 

+ cはBが始まりますが、Aはすでに終了しているのでもう意味をなさないので、データベースプロセスはありません。

私が試した:

A && B 

それはAが成功して終了しないのでどちらも、Bは実行しません動作しません。

私が使用して考える:

Aが背景に置かれたとき、Bはすぐに開始するので、時々仕事なので、時々、B「のときhasnデータベースポートに接続しようとしません
A & B 

完了していないので、データベースプロセスはまだありません。

Aはデータベースが正常に開始されたときにBが起動するだけですか?

+0

渡ってポイントを取得すると思います'A&sleep 20; B' – anubhava

+0

@anubhava、それは唯一の解決策ですか?遅れは正確ではありませんが、時には失敗することがあります。 –

+1

ロバストなソリューションはバックグラウンドでスクリプト 'A'を実行することです。スクリプトを使用して、データベースサーバーが稼働しているときにのみ、*データベース*ステータスをポーリングしてください。fireスクリプト 'B' – anubhava

答えて

2

少し幅の広い、私はそれは、例えば、いくつかの合理的な遅延を入れ

A& 
while [ some_test_fails ]; do 
    sleep some_time 
done 
B 
0

私は

A ; B 

を使用しますが、Bは、それが完全に起動された場合にAを依頼する必要があります。はいの場合はBの実際の実行に進みます。少し時間をおいてからもう一度尋ねてください。この尋問のための貧しい人々の解決策は、特定のファイルの存在である可能性があります。

睡眠時間が短すぎると不安定になる可能性があるので、私はanubhavaの解決方法を使用しません。

0
I thought of using: 

A & B 

Do以上であり、プロセスBでは、Aが中断されているかどうかを確認するループを入れます。 Aは "メイン" が開始さBよりも中断された場合

How to see if a process is suspended in unix

関連する問題