Dockerコンテナを使用してbashスクリプトを正しい順序で実行する方法は?

Dockerコンテナを使用してbashスクリプトを正しい順序で実行する方法は?

いくつかの小さなbashスクリプト(それぞれの小さなスクリプトはdockerコンテナを実行します)を実行するデフォルトのbashスクリプトがありますが、2番目のスクリプトは最初のスクリプトの実行が完了した後にのみ実行したいと思います。つまり、各スクリプトのプロセスが同時に実行されないことを願っています。例:

1st_script.sh param1 param2 param3
2nd_script.sh param1 param2

オンラインアドバイスは私にはうまくいきませんでした。以下を使用して1st_scriptのPIDを取得しようとしています。

1st_Script & echo $!

ps -p <PID> || <2nd_script> その後、<1st_Script> & echo $!PIDが提供されましたが、プロセスが存在することを確認した場合はps -p <PID>何もありません。 1st_scriptが.soを含むdockerコンテナを実行しているため、実行中であることがわかりますdocker ps。そのプロセスもリストする必要があります。ps -p <PID>

1st_Script && 2nd_Script && 3rd_Script && ...スクリプトが多く読めないのでオプションではありません。

答え1

行の連続は、読みやすさを大幅に向上させることができます。

script1 && script2 && script3 && scriptn

比較的

script1 \
  && script2 \
  && script3 \
  && scriptn

しかし、問題を再現することはできません。あなたのスクリプトが何であると考えるか。いいえ順次実行しますか?

私は2つのテストスクリプトを作成しました。それぞれには以下が含まれます。

echo hello
sleep 15s

次に、次のいずれかを含めることがあります。

./script1
./script2

time次の出力を得るために待ち時間を測定します。

hello
hello

real    0m30.003s
user    0m0.002s
sys     0m0.001s

スクリプトが同時に実行されると、合計時間は30秒未満になります。

あなたの質問はあなたが望むものですコンテナ次のスクリプトに移動する前に実行を停止しますか?

関連情報