假设我是一名大型unix新秀, - 我每15分钟通过cron运行一次卷曲请求. - Curl基本上用于加载给出一些参数的网页(php),作为脚本,如:
curl http://mysite.com/?update_=1
我想要实现的是使用这种curl技术运行另一个"脚本" - 每次运行另一个脚本 - 在运行另一个脚本之前
我已经读过curl在一个命令中接受多个url,但我不确定这是否会按顺序或"并行"处理ulrs.
Tim*_*dge 39
它很可能会顺序处理它们(为什么不测试它).但你也可以这样做:
1)创建一个名为curlrequests.sh的文件2)将它放在一个文件中,如下所示:
curl http://mysite.com/?update_=1
curl http://mysite.com/?update_=3
curl http://mysite.com/?update_=234
curl http://mysite.com/?update_=65
Run Code Online (Sandbox Code Playgroud)
3)保存文件并使用chmod使其可执行:
chmod +x curlrequests.sh
Run Code Online (Sandbox Code Playgroud)
4)运行你的文件:
./curlrequests.sh
Run Code Online (Sandbox Code Playgroud)
要么
/path/to/file/curlrequests.sh
Run Code Online (Sandbox Code Playgroud)
作为旁注,您可以使用&&链接请求,如下所示:
curl http://mysite.com/?update_=1 && curl http://mysite.com/?update_=2 && curl http://mysite.com/?update_=3
Run Code Online (Sandbox Code Playgroud)
并使用&并行执行:
curl http://mysite.com/?update_=1 & curl http://mysite.com/?update_=2 & curl http://mysite.com/?update_=3
Run Code Online (Sandbox Code Playgroud)
小智 20
这里没有提到的另一个关键方法是对多个 HTTP 请求使用相同的 TCP 连接,并且为此使用一个curl 命令。
这对于节省网络带宽、客户端和服务器资源以及总体上使用多个curl命令的需要非常有用,因为curl默认情况下会在到达命令结束时关闭连接。
对于运行 Web 应用程序的标准客户端来说,保持连接打开并重用它是很常见的。
从curl版本7.36.0开始,--next或者-:命令行选项允许链接多个请求,并且可以在命令行和脚本中使用。
例如:
curl http://example.com/?update_=1 -: http://example.com/foo
curl http://example.com/?update_=1 -: -d "I am posting this string" http://example.com/?update_=2
curl -o 'my_output_file' http://example.com/?update_=1 -: -d "my_data" -s -m 10 http://example.com/foo -: -o /dev/null http://example.com/random
来自卷曲手册页:
-:, - 下一个
告诉curl 对以下URL 和关联选项使用单独的操作。这允许您发送多个 URL 请求,每个请求都有自己的特定选项,例如每个请求的不同用户名或自定义请求。
-:,--next将重置所有本地选项,只有全局选项的值会保留到 -:, --next 指令之后的操作中。全局选项包括 -v、--verbose、--trace、--trace-ascii 和 --fail-early。例如,您可以在单个命令行中执行 GET 和 POST:
卷曲 www1.example.com --next -d 发布此 www2.example.com
7.36.0 中添加。
Pie*_*erz 19
根据curl 手册页:
您可以在命令行上指定任意数量的 URL。它们将按指定的顺序按顺序获取。
因此,最简单和最有效的(curl 会将它们全部发送到单个 TCP 连接 [那些来自同一来源的])方法是将它们全部放在 curl 的单个调用上,例如:
curl http://example.com/?update_=1 http://example.com/?update_=2
Run Code Online (Sandbox Code Playgroud)
我迟到了 13 年,但与这里的所有其他答案相比,我有一些新的东西要补充。
我发现您的网址末尾有一个数字。我最近遇到了同样的问题,该数字是从 0 到 13 的连续数字。以下是我如何用一行解决该问题的方法:
curl http://example.com/?update_=[0-13]
Run Code Online (Sandbox Code Playgroud)
例如,如果您只想要偶数,则可以指定跳转:
curl http://example.com/?update_=[0-13:2]
Run Code Online (Sandbox Code Playgroud)
以下是curl 手册页的逐字记录:
URL 语法与协议相关。您可以在 RFC 3986 中找到详细说明。
您可以通过在大括号内编写部分集并引用 URL 来指定多个 URL 或 URL 的一部分,如下所示:
"http://site.{one,two,three}.com"或者您可以使用 [] 获取字母数字系列的序列,如下所示:
"ftp://ftp.example.com/file[1-100].txt"
"ftp://ftp.example.com/file[001-100].txt"(带前导零)
"ftp://ftp.example.com/file[a-z].txt"不支持嵌套序列,但您可以相邻使用多个序列:
"http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
| 归档时间: |
|
| 查看次数: |
77154 次 |
| 最近记录: |