码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-11-13 11:25:19      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:并行执行   适合   com   file   exec   bash   情况下   list   执行命令   

【应用场景】

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

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

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:- 批量机器执行的命令

标签:并行执行   适合   com   file   exec   bash   情况下   list   执行命令   

原文地址:http://www.cnblogs.com/ithandonglin/p/7824912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!