0
ファイルのバッチをダウンロードするためのシェルスクリプトがあり、バックグラウンドダウンロードジョブが一定数になるように制御する必要があります。シェルスクリプトでバックグラウンドジョブの数を制御する方法
ファイルのバッチをダウンロードするためのシェルスクリプトがあり、バックグラウンドダウンロードジョブが一定数になるように制御する必要があります。シェルスクリプトでバックグラウンドジョブの数を制御する方法
json='list.json'
wget -o $json http://fileserver/getFileList
jobsCount=0
while IFS= read -r url ; do
#download the file
wget -q $url &
#contorling the amount of concurrent jobs
while true; do
#get current background job count
jobsCount=$(jobs -p | wc -l)
if [ $jobsCount -lt 6 ]; then
echo "jobsCount $jobsCount"
break
fi
echo "jobsCount $jobsCount (Sleep)"
sleep 1
done
done < <(jq -r '.data[] | (.URL)' <$json)
#wait for last batch of job to finish
wait
IMHOホイールを再開発して** GNU並列**を使用しない方が良いかもしれません。その骨は 'parallel -j6 -a $ json wget {}'です。 –