使用xargs并行执行curl API调用时仅获单个响应的疑问
问题分析与解决
你的情况是正常的,但和预期不符的原因出在输入源上:
seq 1 1只会输出一行内容(数字1),xargs的-P 5参数是用来控制同时处理多少个输入项的,而非强制重复执行指定次数。只有当输入中有N个独立项时,xargs才会最多启动N个并行进程(不超过-P设定的数值)。这里输入仅1项,所以不管-P设成5还是更大的数,xargs都只会调用一次curl命令,自然只得到一个响应。
如果要实现并行运行5次curl,你需要让xargs拿到5个输入项,比如修改seq的范围:
seq 1 5 | xargs -I % -P 5 curl -k --user user:pass "https://localhost:port/api"
或者用其他方式生成5行输入:
printf "%s\n" {1..5} | xargs -I % -P 5 curl -k --user user:pass "https://localhost:port/api"
这样xargs会接收到5个独立输入项,配合-P 5就能同时启动5个curl进程,最终得到5个响应。
内容的提问来源于stack exchange,提问作者lengineer
相关产品推荐
相关产品推荐

