Ich möchte viele Dateien verarbeiten und da ich hier eine Reihe von Kernen habe, möchte ich dies parallel tun:
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
Ich kenne eine Makefile- Lösung, aber meine Befehle benötigen die Argumente aus der Shell-Globbing-Liste. Was ich gefunden habe ist:
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
Um es zu verwenden, muss man nur setzen und nach den Jobs und einem pwait-Aufruf gibt der Parameter die Anzahl der parallelen Prozesse an:
> for i in *; do
> do_something $i &
> pwait 10
> done
Aber das funktioniert nicht sehr gut, zB habe ich es mit zB einer for-Schleife versucht, die viele Dateien konvertiert, mir aber Fehler gibt und Jobs ungeschehen macht.
Ich kann nicht glauben, dass dies noch nicht getan ist, da die Diskussion über die zsh-Mailingliste mittlerweile so alt ist. Weißt du es besser?
echo "DONE"
nach der Schleife gesetzt, die ausgeführt wurde, bevor aktive Jobs nicht beendet wurden. => Das hat mich denken lassen, dass Jobs nicht erledigt wurden.