Bash & (ampersand) - operator
Ich versuche, ausgeführt 3 die Befehle parallel in der bash-shell:
$ (first command) & (second command) & (third command) & wait
Das problem mit diesem ist, dass, wenn first command
ausfällt, zum Beispiel, der exit-code ist 0
(ich denke, weil wait
gelingt).
Das gewünschte Verhalten ist, dass, wenn einer der Befehle fehlschlägt, wird der exit-code ungleich null sein (und im Idealfall die anderen Befehle ausführen wird gestoppt).
Wie könnte ich das erreichen?
Bitte beachten Sie, dass ich möchten, führen Sie die Befehle parallel!
InformationsquelleAutor Misha Moroshko | 2012-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
die besten, die ich denken kann, ist:
oder
trotzdem erzwingt eine Reihenfolge für die Prüfung von Prozessen, so dass, wenn der Dritte nicht sofort, Sie wird es nicht bemerken, bis die ersten und zweiten Oberflächen.
InformationsquelleAutor Karoly Horvath
Sollten Sie verwenden
&&
statt&
. eg:Jedoch wird dies NICHT führen Sie Ihren Befehl parallel als jeder nachfolgenden Befehl wird die Ausführung hängt von exit-code 0 des vorherigen Befehls.
Vereinbart und machte eine Anmerkung in meiner Antwort auch. Allerdings, wenn Befehle ausgeführt werden, die parallel dann können Sie nicht prüfen, für die exit-code, da Vorherige Kommando noch nicht beendet, wenn der 2. läuft.
Die wichtigste Einschränkung ist hier, um die Befehle ausführen parallel. Ich bin nicht dagegen, zu ersetzen, die one-liner mit komplizierter bash-Skript, solange die Befehle parallel ausgeführt und der exit-code nicht null im Falle von Fehlern.
Pls verstehen, dass, wenn Befehle ausgeführt werden, die parallel (oder im hintergrund), können Sie nicht haben exit-status sofort verfügbar ist, müssen Sie warten, bis Befehle verlassen.
InformationsquelleAutor anubhava
Könnte dies für Sie arbeiten:
Diese werden ausgeführt 3 die Befehle parallel.
Wenn jeder ausgeführte Auftrag schlägt fehl, es tötet die verbleibenden Aufträge, die ausgeführt werden, und stoppen Sie dann, die Rückkehr der exit-code des fehlerhaften job.
parallel
docs?Es wird ausgeführt 3 die Befehle parallel, aber nicht erfüllen, der exit-code Anforderung von OP.
google gnu parallel. @anubhava aus dem parallel-Handbuch
--halt 2 Kill off all jobs immediately and exit without cleanup. The exit status will be the exit status from the failing job.
InformationsquelleAutor potong