部分:猛砸等待不工作的我的代碼
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!"
正如你看到的,我開始使用GNU Parallel多項任務。問題是清理(rm
)在最後一個並行任務開始之前執行。如何防止這種行爲?
我沒有看到異步進程在您的腳本中等待。沒有'&'任何地方... – Kusalananda
'wait'只等待殼的直接子;它不能用於「等待」由其他進程啓動的進程(比如「並行」)。 – chepner