Wie wird die parallele Ausführung in einem Shell-Skript verwendet?
Ich habe ein C-shell-Skript, das bedeutet so etwas wie dieses:
#!/bin/csh
gcc example.c -o ex
gcc combine.c -o combine
ex file1 r1 <-- 1
ex file2 r2 <-- 2
ex file3 r3 <-- 3
#... many more like the above
combine r1 r2 r3 final
\rm r1 r2 r3
Gibt es eine Möglichkeit, ich kann Linien 1
2
und 3
laufen in parallelanstatt eine nach der anderen?
InformationsquelleAutor der Frage Lazer | 2010-05-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konvertieren Sie diese in ein Makefile mit korrekten Abhängigkeiten. Dann können Sie
make -j
zu haben Machen Sie alles mögliche parallel.Beachten Sie, dass alle Einrückungen im Makefile muss werden Registerkarten. TAB-shows Machen in denen die Befehle ausgeführt werden.
Beachten Sie auch, dass dieses Makefile ist jetzt mit GNU-Erweiterungen durchführen (die wildcard-und subst-Funktionen).
Könnte es so Aussehen:
InformationsquelleAutor der Antwort Zan Lynx
In der bash würde ich das tun;
und laichen Sie aus, parallel laufen. Sie können überprüfen Sie heraus diesen thread SO für ein weiteres Beispiel.
InformationsquelleAutor der Antwort AlG
Ich leicht verändert, den code zu verwenden brace expansion
{1..3}
anstatt codieren Sie die zahlen, da merkte ich, Sie sagte, es gibt noch viel mehr Dateien, als nur 3. Brace expansion macht die Skalierung auf größere zahlen trivial durch einsetzen der '3' in die geschweiften Klammern zu, was Zahl, die Sie brauchen.InformationsquelleAutor der Antwort SiegeX
können Sie verwenden
cmd &
und warten Sie nach
test:
InformationsquelleAutor der Antwort Oleg Razgulyaev
GNU Parallel machen würde es, wie schön:
Je nachdem, wie 'ex' und 'kombinieren' arbeiten können Sie selbst tun:
Erfahren Sie mehr über GNU Parallel, durch die Beobachtung http://www.youtube.com/watch?v=LlXDtd_pRaY
InformationsquelleAutor der Antwort Ole Tange
Könnten Sie nohup ex :
InformationsquelleAutor der Antwort ant
xargs
es tun können:seq 1 3 | xargs -n 1 -P 0 -I % ex file% r%
-n 1
ist für "eine Zeile pro Eingang",-P
ist für "run jeder Zeile parallel"InformationsquelleAutor der Antwort avim