Parallelism

如何在遠端機器上並行執行腳本?

  • December 18, 2015

我可以通過 ssh 連接到具有 64 個核心的遠端機器。假設我需要在這台機器上並行執行 640 個 shell 腳本。我該怎麼做呢?

我可以看到將 640 個腳本分成 64 個組,每組 10 個腳本。然後我將如何並行執行這些組中的每一個,即每個可用核心中的一個上的一組。

將一個腳本的形式

   ./script_A &
   ./script_B &
   ./script_C &
   ...

哪裡script_A對應於第一組,script_B第二組等等,就足夠了?

在一個核心上執行的一組中的腳本可以按順序執行,但我希望這些組在所有核心上並行執行。

這看起來像是 gnu 並行的工作:

parallel bash -c ::: script_*

優點是您不必按核心對腳本進行分組,parallel它會為您完成。

當然,如果您不想在腳本執行時照看 SSH 會話,您應該使用nohupscreen

只要您不需要監視輸出,並且只要腳本需要執行,您就可以將 ssh 會話保持打開狀態,這將起作用。如果其中任何一個都不正確,我建議您使用screen多個選項卡。你可以做類似的事情

screen
for script in script_A script_B script_C; do
 screen -t "$script" ./$script
done;

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