UNIX基于脚本参数执行并行卷曲
我必须以并行方式发送一些cURL请求。 一边是curl.sh脚本(出于安全原因,数据被隐藏): 因此,此脚本将被称为:UNIX基于脚本参数执行并行卷曲,unix,curl,parallel-processing,arguments,Unix,Curl,Parallel Processing,Arguments,我必须以并行方式发送一些cURL请求。 一边是curl.sh脚本(出于安全原因,数据被隐藏): 因此,此脚本将被称为: $ curl.sh requestData outputFile 然后,在另一个parallel.sh脚本中,我有: #!/bin/bash MODE=$1 REQUEST= if [ "$MODE" != "" ] then if [ $MODE -eq 1 ] then REQUEST=requestFil
$ curl.sh requestData outputFile
然后,在另一个parallel.sh脚本中,我有:
#!/bin/bash
MODE=$1
REQUEST=
if [ "$MODE" != "" ]
then
if [ $MODE -eq 1 ]
then
REQUEST=requestFileOne.xml
fi
if [ $MODE -eq 2 ]
then
REQUEST=requestFileTwo.xml
fi
else
echo "ERROR no valid parameter"
echo "./parallel.sh 1|3"
echo " mode 1: send request 1x1"
echo " mode 3: send request 3x3"
fi
if [ "$REQUEST" != "" ]
then
echo "START CURL PARALLEL for $REQUEST"
time ./curl.sh $REQUEST ./out/out_1.xml & ./curl.sh $REQUEST ./out/out_2.xml &
./curl.sh $REQUEST ./out/out_3.xml & ./curl.sh $REQUEST ./out/out_4.xml &
./curl.sh $REQUEST ./out/out_5.xml & ./curl.sh $REQUEST ./out/out_6.xml
wait
fi
echo "END CURL PARALLEL"
正如你所看到的,现在我知道了
$ ./parallel.sh 1
但是,如果我想更改并行调用的数量,我必须编辑parallel.sh脚本文件,我需要如下内容:
$ ./parallel.sh file number
其中{file:1 | 2}是与cURL一起使用的数据文件,{number:X}将是并行调用的数量
首先,我考虑在循环中构建并行执行命令
for i in 1..$2
do
stringVar="$stringVar | ./curl.sh $REQUEST ./out/output_$i.xml"
done
for i in 1..$2
do
result=`./curl.sh $REQUEST ./out/output_$i.xml`
done
for i in 1..$2
do
./curl.sh $REQUEST ./out/output_$i.xml
done
但是,很明显,这些循环都没有达到预期效果。
在第一个循环中,我试图将curls命令保存为String,所以稍后我将以String命令的形式运行String
有什么想法吗?
提前感谢。您可以使用GNU并行:
seq 100 | parallel -j0 curl.sh file.xml output{}.xml
观看GNU Parallel的介绍视频,了解更多信息:
10秒安装:
wget -O - pi.dk/3 | bash
那使用什么呢?通过这种方式,您可以像
/parallel.sh-f file-n number那样执行它,并定义默认值。如果我知道必须调用cURL脚本多少次,那就太好了。但用户可以只使用一个呼叫(-n1)[非并行]、一对(-n2)、两对(-n4)等等。
wget -O - pi.dk/3 | bash