Č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