Bash:- 批量机器执行的命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bash:- 批量机器执行的命令相关的知识,希望对你有一定的参考价值。

【应用场景】

  有一批服务器需要执行命令,需根据机器数量来衡量选用方法;  

第一种方法:适合数量很少情况下,串行执行,耗时较长;

LIST=(
"192.168.1.1|/data/server1"
"192.168.1.2|data/server2"
)
for i in ${LIST[@]};do
    command "${LIST[0]}" "${LIST[0]}"
done

第二种方法:适合数量不多情况下,并行执行,耗行较短,但是容易挤坏机器; 

LIST=(
"192.168.1.1|/data/server1"
"192.168.1.2|data/server2"
...
)
for i in ${LIST[@]};do
    (command "${LIST[0]}" "${LIST[0]}") &
done
wait

第三种方法:模拟并发,兼顾以上两者; 

LIST=(
"192.168.1.1|/data/server1"
"192.168.1.2|data/server2"
...
)
PARALLEL=10
tmpfile=$$.fifo
mkfifo ${tmpfile}
exec 4 <> ${tmpfile}
rm -f ${tmpfile}
{
    while [ ${PARALLEL} -gt 0 ];do
        echo
        let PARALLEL=${PARALLEL}-1
    done
} > &4

while read -u10 SEQ;do
    read < &4
    (command;echo >&4)&
done 10< <(for i in ${LIST[@]};do echo ${i};done)

 

以上是关于Bash:- 批量机器执行的命令的主要内容,如果未能解决你的问题,请参考以下文章

批量复制及执行命令shell脚本

Linux多台主机批量执行命令

批量远程执行命令

Python 批量登录远端多个机器执行命令

Shell实战批量在多台服务器上执行命令

Linux bash基础特性二