Files

curl 列印它的 pid 然後在後台執行

  • February 10, 2020

我通過一個簡單的curl請求體驗了一些新的東西。

該命令是 curl 的簡單呼叫,例如:

curl http://example.com/endpoint/?arg1=val1&arg2=val2

該呼叫應該返回一個 500+ MB 的 XML 文件(準備好後,我將-O它保存到一個文件中),但沒有什麼奇怪的,真的。

奇怪的是 curl 只是列印它的 pid 並進入後台:

[1] 31562

過了一會兒,遠端文件開始出現在控制台中,並且在後台,我無法使用Ctrl+C.

我從來沒有經歷過這樣的事情。如果我嘗試下載 1.9 GB 的文件:

curl -O https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/7601.17514.101119-1850_Update_Sp_Wave1-GRMSP1.1_DVD.iso

它工作正常!

任何的想法?

來自正常下載的標題:

curl -v -s https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/7601.17514.101119-1850_Update_Sp_Wave1-GRMSP1.1_DVD.iso 1> /dev/null
*   Trying 92.123.112.141:443...
* TCP_NODELAY set
* Connected to download.microsoft.com (92.123.112.141) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: none
 CApath: /etc/ssl/certs
... more HTTPS stuff ...
} [5 bytes data]
> GET /download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/7601.17514.101119-1850_Update_Sp_Wave1-GRMSP1.1_DVD.iso HTTP/1.1
> Host: download.microsoft.com
> User-Agent: curl/7.65.3
> Accept: */*
> 
{ [5 bytes data]
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Content-Type: application/octet-stream
< Accept-Ranges: bytes
< Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
< x-ms-blob-content-md5: mw6jWIuMir1+rZG9/mzj+A==
< Last-Modified: Sat, 13 Oct 2018 00:34:54 GMT
< ETag: "0x8D630A3B1CF6138"
< Content-Length: 2048196608
< Date: Mon, 10 Feb 2020 21:11:55 GMT
< Connection: keep-alive
< 
{ [16038 bytes data]
^C

我的電話:

*   Trying 192.168.0.200:80...
* TCP_NODELAY set
* Connected to example.com port 80 (#0)
> GET /endpoint/?arg1=val1&arg2=val2 HTTP/1.1
> Host: example.com
> User-Agent: curl/7.65.3
> Accept: */*
> 
^C

該 URL 包含一個&,這意味著您的命令將啟動

curl http://example.com/endpoint/?arg1=val1

在後台,然後將 shell 變數設置arg2為 value val2,因為這就是當 shell 解析該行時 URL 的下一位的含義。

在 URL 周圍使用引號:

curl 'http://example.com/endpoint/?arg1=val1&arg2=val2'

引用自:https://unix.stackexchange.com/questions/566832