Я пишу немного script, который будет создавать архивы в основном потоке и после завершения каждого архива будет создан новый поток, вызывая функцию, которая будет заботиться о загрузке этих архивов. Причина, по которой я хочу, чтобы загрузка выполнялась в фоновом режиме, заключается в создании другого архива при загрузке предыдущих архивов.
Проблема, с которой я столкнулась, находится в самом конце script. То есть, основной поток не дожидался завершения всех потоков загрузки до выхода. Посмотрите на следующий упрощенный script (я удалил/изменил части кода, не связанные с проблемой)
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
Все выполняется очень красиво до тех пор, пока не будет создан последний архив, а затем script заканчивается перед тем, как закончится нить func
, оставив много файлов не загруженным.
Спасибо за ваши идеи.