我有一个接受多个参数的脚本,我需要在 AWS 上的多个实例上并行运行此脚本。例如,为了简单起见,如果我在 AWS 中有三个实例,我想运行以下命令:
On instance-a: script.sh a b
On instance-b: script.sh s t
On instance-c: script.sh y z
我将使用 AMI 生成实例,AMI 将运行时(MATLAB)和程序(使用运行时)作为映像的一部分安装。
我正在检查这链接,我看到 Capistrano 被提及。这在我的例子中有用吗?还有其他可以探索的轻量级替代方案吗?顺便说一下,我需要从每个实例生成的返回状态和输出(CSV 文件)。
答案1
如果你只想要 3,那么这将起作用(版本 >= 20161222 才能--results my.csv
起作用):
parallel --results my.csv ssh {1} script.sh {2} {3} ::: instance-a instance-b instance-c :::+ a s y :::+ b t z
但让我猜一下:您在名为的文件中列出了更多实例hosts.txt
:
instance-a
instance-b
instance-c
你不必关心哪个实例运行哪些作业 - 它们只是工作者。你有一个类似这样的 .tsv 文件input.tsv
:
a[tab]b
s[tab]t
y[tab]z
然后你可以运行:
parallel --slf hosts.txt --results my.csv -a input.tsv --colsep '\t' script.sh
如果您的命令0
成功返回,您甚至可以在廉价的现货市场服务器上运行:通过使用,如果一台服务器发生故障(即不返回),--retries 5
您可以要求 GNU Parallel 在另一台服务器上重新执行该作业。0