
我有一個需要多個參數的腳本,我需要在 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) 和程式(使用執行時間)作為映像的一部分安裝。
我正在檢查這鏈接,我看到提到了卡皮斯特拉諾。這對我的情況有用嗎?還有其他可以探索的輕量級替代方案嗎?順便提一下,我需要每個實例產生的返回狀態和輸出(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
成功返回,你甚至可以在便宜的現貨市場伺服器上運行:透過使用,如果一台伺服器發生故障(即返回 not ),--retries 5
你可以要求 GNU Parallel 在另一台伺服器上重新執行工作。0