gnu parallel - 加速等待远程服务器的命令

gnu parallel - 加速等待远程服务器的命令

我正在使用 gnu parallel 为 pantheon.io 上大约 1500 个网站生成备份,使用它们的终端命令行界面。该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

答案1

不指定并行运行的作业数量将使其默认为 cpu 数量。

从手册中:

-j

每台机器上的作业槽数。并行运行最多 N 个作业。 0 表示尽可能多。默认值为 100%,这将在每台计算机上的每个 CPU 上运行一个作业。

一般来说,这是一个安全的选择,但您正在等待网络,而不是计算。所以你可以轻松地增加数量。我会尝试 -j 200。它应该工作得很好。您可以调整此参数以获得所需的速度。

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

相关内容