Lafen eng limitéiert Zuel vu Kannerprozesser parallel am Bash? [Duplikat]

Dës Fro huet schonn eng Äntwert hei:

Ech hunn e grousse Set vu Dateien fir déi eng schwéier Veraarbechtung muss gemaach ginn. Dës Veraarbechtung an engem eenzege Fuedem, benotzt e puer honnert MiB vum RAM (op der Maschinn déi benotzt gëtt fir den Job ze starten) an dauert e puer Minutten ze lafen. Meng aktuell Usekase ass en Hadoop Job op den Input Daten unzefänken, awer ech hunn dee selwechte Problem an anere Fäll scho virdru gemaach.

Fir déi verfügbar CPU-Kraaft voll auszesetzen, wëll ech verschidden Aufgaben ausféieren. paralell.

Wéi och ëmmer e ganz einfacht Beispill Shell-Skript wéi dëst wäert d'Systemleistung duerch eng exzessiv Belaaschtung an auswiesselen trashen:

find . -type f | while read name ; 
do 
   some_heavy_processing_command ${name} &
done

Also wat ech wëll ass am Fong ähnlech wéi "gmake -j4" mécht. bash ënnerstëtzt den "Waarden" Kommando awer dat waart just bis all Kand Prozesser ofgeschloss sinn. An der Vergaangenheet hunn ech Skripting erstallt dat e 'ps' Kommando mécht an duerno d'Kand duerch den Numm veraarbecht (jo, ech weess ... ellen).

Wat ass déi einfachst / propperst / bescht Léisung fir ze maachen wat Ech wëll?


Änneren: Merci un de Frederik: Jo, dat ass en Duplikat vun Wéi limitéiert d'Unzuel vun Themen / Ënnerprozesser déi an enger Funktioun am Bash benotzt ginn De "xargs --max-procs = 4" funktionnéiert wéi e Charme. (Also hunn ech gestëmmt fir meng eege Fro zouzemaachen)

24
задан Community 23 May 2017 в 12:00
поделиться