#!/bin/bash
sleep 1 &
T1=${!}
sleep 4 &
T2=${!}
sleep 6 &
T3=${!}
sleep 8 &
T4=${!}
sleep 10 &
T5=${!}
# amb jobs, veiem el número de treballs que estem executant, no el PID
#jobs
echo "Aquests script engega 5 processos en fons amb els PID's ${T1}, ${T2}, ${T3}, ${T4}, ${T5}."
# esperem a què acabi el T1 per executa l'echo (no continuem fins que acabi)
wait ${T1}
echo "El fil 1 (sleep 1) amb el PID ${T1} ha acabat!"
# esperem a què acabi el T2 per executa l'echo (si no ha acabat T1, mai arribarem aquí)
wait ${T2}
echo "El fil 2 (sleep 4) amb el PID ${T2} ha acabat!"
Una altra versió…
#!/bin/bash
echo Copiant fitxers...
PIDs=""
for I in *.png
do
convert "$I" "jpg/$(basename "$I" .png).jpg" &
PIDs+="$! "
done
wait $PIDs
echo Fet!
Limitant a 10 jobs …
!/bin/bash
echo Copiant fitxers...
PIDs=""
function max2 {
while [ `jobs | wc -l` -ge 10 ]
do
sleep 1
done
}
for I in *.png
do
max2; convert "$I" "jpg/$(basename "$I" .png).jpg" &
done
wait $PIDs
echo Fet!