#!/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!