バックグラウンドでプログラムを実行し、&&を使用して他のコマンドを実行する方法[閉じる]

バックグラウンドでプログラムを実行し、&&を使用して他のコマンドを実行する方法[閉じる]

バックグラウンドでノードアプリを実行してカーリングしている間に&&を使いたいです。フォローしてみましたが、できません。

node app.js &;curl localhost

私は別のことを試しました

node app.js & && curl localhost

しかし、どちらも機能しません

ベストアンサー1

欲しいかもしれません

echo first && echo second && echo third & wait

これはあなたに出力を提供します(類似)

[1] 4242
first
second
third 
[1]+ Done

最後のコマンドは、前の&コマンド全体をパイプライン/タスクに入れます。アクションは、シェルブール式を使用して一緒にリンクされた3つのコマンドで構成されます。そのうちの1つがfalseを返した場合、チェーンは終了する必要があります。しかし、すべてがバックグラウンドで実行されます。

最初のプログラムはバックグラウンドで実行し、2番目のプログラムはフォアグラウンドで実行するときの問題は、2番目のコマンドが最初のコマンドが正常に完了したかどうかを知ることができないことです。プログラムをバックグラウンドに配置すると、ステータスは0になります。〜しない限りプログラムを実行できません。したがって、以下のコードは実際に確かに合理的な:

( start_webservice & ) && curl localhost

これも言うべきではありません:

start_webservice & test "$?" = 0 && curl localhost

ただバックグラウンドサービスを開始し、無条件にテストしてみてください。テストする前にしばらく待つ必要があります。

   start_webservice &
   success=0
   tries=5
   pause=1
   while [ $success = 0 -a $tries -gt 0 ]; do
     sleep $pause
     let tries=tries-1
     curl localhost && success=1
   done
   if [ $success = 0 ]; then
     echo "Launch failed"
   fi

おすすめ記事