Čekání na konec procesů v shellu

Michael Mraka Michael.Mraka na homecredit.net
Úterý Leden 11 13:56:41 CET 2005


Vancl Miroslav (QRIS) wrote:
% Zdravím,
% 
% mám tady takový oříšek:
% 
% Potřeboval bych ve skriptu spustit N paralelních procesů a čekat až některý
% (kterýkoliv jeden) z nich skončí.
...
% Praktické použití: Například když chci zpracovat (např. zkomprimovat) na
% N-procesorovém stroji množinu souborů, může být výhodné se snažit jich
% zpracovávat právě N paralelně. Jak to ale bez složitých obezliček udělat v
% shellu, to skutečně netuším. Složitou obezličkou mám na mysli rozjet N
% subshellů, které budou v cyklu odebírat z fronty (třeba roura od hlavního
% shellu) jména souborů ke zpracování (zkomprimování). Musí se asi vyřešit
% synchronizace přístupu k rouře a taky bych rád centrálně zpracovával
% návratové kódy z těch jednotlivých zpracování...

make is your friend :)

Resil jsem nedavno stejnou ulohu. Relevantni kod vypada asi takto (nutno
vyzkouset jestli jsem to pri opisovani ze slozitejsiho makefile
nezjednodusil moc :)...

$ cat >Makefile <<EOF

MY_FILES = a b c d e f
DEST_DIR = /nekde/jinde

copy_files: $(MY_FILES)

$(MY_FILES):
	cp $@ $(DEST_DIR)/$@

EOF

$ make -j 4 copy_files

Pozn.: pred tim cp $@ .... je tabelator a ne mezery :)


--mm                                                            Michael Mráka



Další informace o konferenci Linux