首页 > 其他 > 详细

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

时间:2017-11-13 10:34:47      阅读:209      评论:0      收藏:0      [点我收藏+]

【应用场景】

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

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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!