【发布时间】:2018-09-08 11:52:26
【问题描述】:
我有一个 json 文件,其中包含包含 url(以及其他内容)的条目,我使用 curl 检索该文件。 我希望能够一次运行多次循环以加快速度,但也希望限制并行卷曲的数量,以避免被远程服务器踢出。 现在,我的代码就像
jq -r '.entries[] | select(.enabled != false) | .id,.unitUrl' $fileIndexFeed | \
while read unitId; do
read -r unitUrl
if ! in_array tabAnnoncesExistantesIds $unitId; then
fullUnitUrl="$unitUrlBase$unitUrl"
unitFile="$unitFileBase$unitId.json"
if [ ! -f $unitFile ]; then
curl -H "Authorization:$authMethod $encodedHeader" -X GET $fullUnitUrl -o $unitFile
fi
fi
done
如果我在 curl 结束时使用简单的 &,它将运行大量并发请求,我可能会被踢。 所以,问题是(我想):如何知道用 & 运行的 curl 已经完成了它的工作?如果我能够检测到这一点,那么我想我可以测试、增加和减少一个变量来告诉正在运行的卷曲的数量。
谢谢
【问题讨论】:
-
在运行 curl 命令帮助之前会检查 ps -ef|grep -i curl |wc -l 吗?如果系统中运行的 curl 进程的数量已达到您定义的限制,您可以保持检查睡眠。一旦进程数下降,您可以运行下一个 curl。这是必需的吗?
标签: bash unix curl parallel-processing