Ich möchte die Funktion von GNU parallel verwenden, mit der der Befehl und die Liste, die parallel eingegeben werden, ausgeführt und nach Abschluss des Vorgangs ausgespuckt werden können. Ich möchte GNU jedoch nicht parallel auf allen unseren Servern installieren.
Oder vielleicht eine parallele Version von xargs
?
Gibt es eine ksh-Implementierung dessen, was GNU Parallel tut? In diesem Fall muss dies nicht wie bei GNU Parallel erfolgen - solange der gesamte Ausgang weitergeleitet oder gespeichert werden kann. Ich möchte auch die Verwendung temporärer Dateien vermeiden.
ksh
gnu
parallelism
gnu-parallel
Nitrodist
quelle
quelle
Antworten:
Wenn Sie auf einer Maschine mit mehreren Kernen parallelisieren möchten, können Sie einfach (GNU) verwenden
xargs
, z.Bedeutung:
xargs
Startet bis zu 16 Prozesse parallel zur./crunching
Verwendung von 1 Token von stdin für jeden Prozess.Sie können auch
split
in Kombination mit xargs verwenden.Oder Sie können ein einfaches Makefile für die Jobausführung erstellen und aufrufen
make -f mymf -j $CORES
(für diese Lösung benötigen Sie temporäre Dateien).PS: Das GNU-Parallelhandbuch enthält auch einige Vergleiche mit anderen Tools, einschließlich xargs und make . Interessanterweise schreiben sie:
quelle
xargs
ist notorisch schlecht, wenn es parallel ausgeführt wird, da sich die Ausgabe mischen kann.Sehen Sie sich an,
parallel --embed
welche GNU Parallel in dasselbe Shell-Skript eingebettet sind, aus dem Sie es verwenden.Bearbeiten Sie dann new_script.
quelle