いくつかの小さな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秒未満になります。
あなたの質問はあなたが望むものですコンテナ次のスクリプトに移動する前に実行を停止しますか?