我正在使用自动运行脚本来处理数据aria2
的选项来下载一些数据。--on-download-complete
bash
aria2c --http-user='***' --http-passwd='***' --check-certificate=false --max-concurrent-downloads=2 -M products.meta4 --on-download-complete=/my/path/script_gpt.sh
专注于我的bash
剧本,
#!/bin/bash
oldEnd=.zip
newEnd=_processed.dim
for i in $(ls -d -1 /my/path/S1*.zip)
do
if [ -f ${i%$oldEnd}$newEnd ]; then
echo "Already processed"
else
gpt /my/path/graph.xml -Pinput1=$i -Poutput1=${i%$oldEnd}$newEnd
fi
done
基本上,每次下载完成时,都会for
开始一个循环。首先,它检查下载的产品是否已经被处理,如果没有,它会运行一个特定的任务。
我的问题是每次下载完成时,bash
脚本都会运行。这意味着如果从上次bash
运行脚本时分析没有完成,两个任务将重叠并吃掉我所有的内存资源。
理想情况下,我想:
每次
bash
运行脚本时,检查是否还有正在进行的进程。如果是这样,请等到它完成然后运行
这就像创建一个任务队列(就像在一个for
循环中,每次迭代都等到前一个迭代完成)。
我试图用wait
或识别出解决方案,PID
但没有成功。
也许改变方法,而不是aria2
用来处理刚刚下载的数据,实施另一个解决方案?