Teil meines Code:Bash Warte funktioniert nicht
for i in "${r_arr[@]}"
do
${parallel_dir}parallel -j${cap} --semaphore --semaphorename a2_bootstrap_semaphore_${rnd} a2_exec ${i} ${temp_zmat_folder_path}${temp_zmat_folder}/ ${outs_folder}
done
wait
elapsed_time=$(($SECONDS - $start_time))
rm -rf "${temp_zmat_folder_path}${temp_zmat_folder}"
echo "Cleanup done."
echo "`date +%d-%m-%y` `date +%T`: All processing finished in ${elapsed_time} seconds!"
Wie Sie mir beginne eine Reihe von Aufgaben sehen GNU Parallel verwenden. Das Problem ist, dass die Bereinigung (rm
) ausgeführt wird, bevor die letzte der parallelen Aufgaben überhaupt gestartet wird. Wie kann man ein solches Verhalten verhindern?
Ich sehe keinen asynchronen Prozess in Ihrem Skript warten. No '&' anywhere ... – Kusalananda
'wait' wartet nur auf direkte Kinder der Shell; es kann nicht dazu verwendet werden, auf Prozesse zu warten, die von anderen Prozessen gestartet wurden (wie zum Beispiel "parallel"). – chepner