Parallelism
如何在遠端機器上並行執行腳本?
我可以通過 ssh 連接到具有 64 個核心的遠端機器。假設我需要在這台機器上並行執行 640 個 shell 腳本。我該怎麼做呢?
我可以看到將 640 個腳本分成 64 個組,每組 10 個腳本。然後我將如何並行執行這些組中的每一個,即每個可用核心中的一個上的一組。
將一個腳本的形式
./script_A & ./script_B & ./script_C & ...
哪裡
script_A
對應於第一組,script_B
第二組等等,就足夠了?在一個核心上執行的一組中的腳本可以按順序執行,但我希望這些組在所有核心上並行執行。
這看起來像是 gnu 並行的工作:
parallel bash -c ::: script_*
優點是您不必按核心對腳本進行分組,
parallel
它會為您完成。當然,如果您不想在腳本執行時照看 SSH 會話,您應該使用
nohup
或screen
只要您不需要監視輸出,並且只要腳本需要執行,您就可以將 ssh 會話保持打開狀態,這將起作用。如果其中任何一個都不正確,我建議您使用
screen
多個選項卡。你可以做類似的事情screen for script in script_A script_B script_C; do screen -t "$script" ./$script done;