并行执行脚本

时间:2019-05-02 04:38:22

标签: bash

我有一个脚本,它将作为中央服务器的参数执行,如下所示-

`SCRIPT.sh host1`   

像上面一样,我必须在许多主机上执行。因此每台主机将需要1分钟的时间来执行。

SCRIPT.sh host1 
SCRIPT.sh host2 
SCRIPT.sh host3
......
.........

到目前为止,我正在下面的简单for循环中尝试,这会花费太多时间。

for i in `cat host_list`;do echo $i;SCRIPT.sh $i;done

是否有可能在上述并行执行循环,我的意思是一次50/100主机。 有任何建议。

2 个答案:

答案 0 :(得分:0)

您可以使用“&”在不同的shell上运行并行批处理命令。

for i in `cat host_list`;do echo $i;SCRIPT.sh $i & done

如果有很多Shell脚本,也可以在它们之间放置“ wait”。

答案 1 :(得分:0)

parallel -j50 SCRIPT.sh :::: host_list

如果SCRIPT.sh包含ssh $1 "cmd; cmd; cmd",则可以改为:

parallel -j50 --slf host_list --nonall 'cmd; cmd; cmd'