Gnu-Parallel

gnu parallel - 對等待的遠端伺服器加速命令

  • April 23, 2021

我正在使用 gnu parallel 為 pantheon.io 上大約 1500 個網站生成備份,使用它們的終端 CLI。該terminus backup:create命令在收到遠端端已完成的響應之前不會完成。我想知道是否有任何方法可以通過並行來更好地加快速度,以便在等待以前的站點完成時可以備份更多站點,或者如果沒有,則可以更全面地執行。如果它有任何區別,這是從 Jenkins CI 作業執行的。謝謝你。

#!/bin/bash +x

backup_sites() {
 BACKUP=$(terminus backup:create "$*".live)
 echo "$*": "$BACKUP"
}

SITE_LIST=$(terminus site:list --field=name)

export -f backup_sites
echo "$SITE_LIST" | parallel backup_sites

不指定並行執行的作業數量將使其預設為 CPU 數量。

從手冊:

-j

每台機器上的工作槽數。最多並行執行 N 個作業。0 表示盡可能多。預設值為 100%,這將在每台機器上的每個 CPU 上執行一個作業。

一般來說,這是一個安全的選擇,但你在等待網路,而不是計算。因此,您可以輕鬆增加數量。我會嘗試 -j 200。它應該工作得很好。您可以調整此參數以獲得所需的速度。

所以echo "$SITE_LIST" | parallel -j 200 backup_sites而不是echo "$SITE_LIST" | parallel backup_sites

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