Estoy escribiendo un pequeño script, que creará archivos en el hilo principal y después de que se complete cada archivo, se creará un nuevo hilo llamando a la función que se encargaría de cargar estos archivos. El motivo por el que quiero que se cargue en segundo plano es para poder crear otro archivo mientras se cargan los archivos anteriores.Enlazado de Bash: esperar a que terminen todos los hilos de trabajo no funciona?
El problema que estoy teniendo está al final del script. Es decir, el hilo principal no espera a que todos los subprocesos suban antes de salir. Mira el siguiente script simplificado (He quitado/cambiado partes del código no relacionados con el problema)
function func {
for files in /home/somewhere/
do
echo "Uploading $1" &
done
wait
}
find /home/some/path -type f | while read filename ; do
echo "Creating archive of $filename"
func $somevariable &
done
wait
Todo está ejecutando muy bien hasta que se cree el último archivo, entonces el script termina antes de que todos func
hilos terminan, dejando muchos archivos no cargados.
Gracias por sus ideas.
@Andrew: ¿qué sistema operativo está usando? Conozco algunas compilaciones de Solaris que tienen un error de espera como este. –
@martin clayton: Estoy usando Ubuntu Server 9.10 – Gargauth