Bash
Bash 並行命令是順序執行命令
我正在嘗試在 bash 中並行下載多個文件,但遇到了 GNU 並行。它看起來非常簡單直接。但是我很難讓 GNU 並行工作。我究竟做錯了什麼?任何指針表示讚賞。如您所見,輸出是非常連續的,我希望輸出每次都不同。我在 SO(GNU 並行根本不工作)中看到了一個類似的問題,但是提到那裡的解決方案對我不起作用。
svarkey@svarkey-Precision-5510:~$ seq 1 3 | xargs -I{} -n 1 -P 4 kubectl 版本 --short=true --context cs-prod{} --v=6 I0904 11:33:10.635636 24861 loader.go:375] 從文件載入的配置:/home/svarkey/.kube/config I0904 11:33:10.640718 24863 loader.go:375] 從文件載入的配置:/home/svarkey/.kube/config I0904 11:33:10.640806 24862 loader.go:375] 從文件載入的配置:/home/svarkey/.kube/config I0904 11:33:11.727974 24863 round_trippers.go:443] GET https://kube-api.awsw3.cld.dtvops.net/version?timeout=32s 200 OK 在 1086 毫秒 客戶端版本:v1.18.7 伺服器版本:v1.14.6 I0904 11:33:11.741985 24861 round_trippers.go:443] GET https://kube-api.awsw1.cld.dtvops.net/version?timeout=32s 200 OK 在 1105 毫秒 客戶端版本:v1.18.7 伺服器版本:v1.14.6 I0904 11:33:11.859882 24862 round_trippers.go:443] GET https://kube-api.awsw2.cld.dtvops.net/version?timeout=32s 200 OK 在 1218 毫秒 客戶端版本:v1.18.7 伺服器版本:v1.14.6 svarkey@svarkey-Precision-5510:~$ seq 1 3 | 並行 -j 4 -I{} kubectl 版本 --short=true --context cs-prod{} --v=6 客戶端版本:v1.18.7 伺服器版本:v1.14.6 I0904 11:33:18.584076 24923 loader.go:375] 從文件載入的配置:/home/svarkey/.kube/config I0904 11:33:19.662197 24923 round_trippers.go:443] GET https://kube-api.awsw1.cld.dtvops.net/version?timeout=32s 200 OK 在 1077 毫秒 客戶端版本:v1.18.7 伺服器版本:v1.14.6 I0904 11:33:18.591033 24928 loader.go:375] 從文件載入的配置:/home/svarkey/.kube/config I0904 11:33:19.691343 24928 round_trippers.go:443] GET https://kube-api.awsw3.cld.dtvops.net/version?timeout=32s 200 OK 在 1099 毫秒 客戶端版本:v1.18.7 伺服器版本:v1.14.6 I0904 11:33:18.591033 24924 loader.go:375] 從文件載入的配置:/home/svarkey/.kube/config I0904 11:33:19.775152 24924 round_trippers.go:443] GET https://kube-api.awsw2.cld.dtvops.net/version?timeout=32s 200 OK 在 1183 毫秒 svarkey@svarkey-Precision-5510:/tmp/parallel-20200822$ 並行 --version GNU 並行 20200822 版權所有 (C) 2007-2020 Ole Tange,http://ole.tange.dk 和自由軟體 基金會,股份有限公司。 許可 GPLv3+:GNU GPL 版本 3 或更高版本 這是免費軟體:您可以自由更改和重新分發它。 GNU 並行不提供任何保證。 網址:https://www.gnu.org/software/parallel
parallel
輸出是順序的,因為它擷取程序輸出並僅在該程序完成時列印它,xargs
這與讓程序立即列印輸出不同。從
man parallel
GNU parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it possible to use output from GNU parallel as input for other programs.