[gelöst] parallele ausführung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
tomi89
Beiträge: 269
Registriert: 21.08.2014 00:21:52

[gelöst] parallele ausführung

Beitrag von tomi89 » 01.11.2015 17:01:39

Hallo Debianer,

kann mir jemand sagen wie man die Zeilen in einem Shellscript failsafe parallel ausführt oder nach welchen Begriffen man dazu googlen sollte?

Gegeben sei folgendes Shell Script:

Code: Alles auswählen

Befehl1 &
Befehl2 &
Befehl3 &

Befehl4 &
Befehl5 &
Befehl6 &
Nun sind die Befehle 4 bis 6 jedoch von den Ergebnissen der Befehle 1 bis 3 abhängig geworden.

Sprich zu Erst sollen nun die Befehle 1 bis 3 parallel UND BIS ZU IHRER VOLLSTÄNDIGEN FERTIGSTELLUNG ausgeführt werden. Erst danach sollen die Befehle 4 bis 6 PARALLEL ausgeführt werden.
Zuletzt geändert von tomi89 am 01.11.2015 19:43:19, insgesamt 1-mal geändert.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: parallele ausführung

Beitrag von rendegast » 01.11.2015 18:04:18

Code: Alles auswählen

tmpa=$(tempfile)
tmpb=$(tempfile)
tmpc=$(tempfile)

   ( Befehl1; rm $tmpa; ) &
   ( Befehl2; rm $tmpb; ) &
   ( Befehl3; rm $tmpc; ) &

until [ "x" = "x$(ls $tmpa $tmpb $tmpc 2>/dev/null)" ]; do
    sleep 1
done

    Befehl4 &
    Befehl5 &
    Befehl6 &
EDIT 'sleep1' -> 'sleep 1'

Oder ist sowas gemeint?

Code: Alles auswählen

   ( Befehl1; Befehl4; ) &
   ( Befehl2; Befehl5; ) &
   ( Befehl3; Befehl6; ) &
Zuletzt geändert von rendegast am 03.11.2015 12:42:57, insgesamt 2-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

tomi89
Beiträge: 269
Registriert: 21.08.2014 00:21:52

Re: parallele ausführung

Beitrag von tomi89 » 01.11.2015 19:25:00

Vielen Dank für die Hilfe.

Der Trick mit until hat 1A geklappt.

Milbret
Beiträge: 827
Registriert: 26.05.2008 12:04:54
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Nörten-Hardenberg
Kontaktdaten:

Re: [gelöst] parallele ausführung

Beitrag von Milbret » 03.11.2015 10:01:44

Wäre es nicht sinnvoller direkt mit wait zu arbeiten?
wait ohne Parameter wartet dann solange, bis die Befehle im Hintergrund durch sind.
Dies ist meiner Meinung nach eine saubere Lösung als das until.

Danach kannst du dann deine restlichen Befehle abarbeiten lassen und dann nochmals mit wait auf deren Verarbeitung warten.
Nutze solch ein Konstrukt bei mir um rsync Backups parallel zu machen und dann am Ende auf alle zu warten.

Martin
Es gibt keine if Schleife -> http://www.if-schleife.de/
Ansonsten GPL/GNU/Linux/Debian/Free Software 4 Ever :D

Antworten