Wie führe ich Bash-Skripte mit Docker-Containern in der richtigen Reihenfolge aus?

Wie führe ich Bash-Skripte mit Docker-Containern in der richtigen Reihenfolge aus?

Ich habe ein Haupt-Bash-Skript, das mehrere kleinere Bash-Skripte ausführt (und jedes kleinere Skript führt einen Docker-Container aus). Ich möchte jedoch, dass das zweite Skript erst ausgeführt wird, nachdem die Ausführung des ersten abgeschlossen ist, und so weiter. Das heißt, ich möchte, dass die Prozesse der einzelnen Skripte NICHT gleichzeitig ausgeführt werden. Beispiel:

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

Die Online-Vorschläge helfen mir nicht weiter. Ich habe versucht, die PID von 1st_script zu erhalten mit:

1st_Script & echo $!

um dann zu verwenden ps -p <PID> || <2nd_script> Aber obwohl <1st_Script> & echo $!eine PID angegeben wird, ps -p <PID>ist nichts da, wenn ich überprüfe, ob der Prozess da ist. Ich weiß, dass 1st_script läuft, weil der Docker-Container, den es ausführt, mit aufgeführt ist docker ps. Daher sollte sein Prozess auch mit aufgeführt sein.ps -p <PID>

1st_Script && 2nd_Script && 3rd_Script && ...ist keine Option, da ich viele Skripte habe und diese nicht lesbar sind

Antwort1

Fortsetzungszeilen können die Lesbarkeit erheblich verbessern:

script1 && script2 && script3 && scriptn

gegen

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

Aber ich habe Probleme, Ihr Problem zu reproduzieren. Was gibt Ihnen den Eindruck, dass Ihre Skriptenichtsequentiell ablaufen?

Ich habe zwei Testskripte erstellt, die jeweils Folgendes enthielten:

echo hello
sleep 15s

und dann ein Skript, das nur enthielt

./script1
./script2

und habe die Wartezeit gemessen, timeum die folgende Ausgabe zu erhalten

hello
hello

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

Wenn die Skripte gleichzeitig ausgeführt würden, hätte die Gesamtzeit weniger als 30 Sekunden betragen.

Ist Ihr Anliegen stattdessen, dass Sie dieContainersoll die Ausführung gestoppt werden, bevor mit dem nächsten Skript fortgefahren wird?

verwandte Informationen