shell脚本并发执行

#!/bin/bash

your_func()
{   # use your cmd or func instead of sleep here. don't end with background(&)
    date +%s
    echo "scp HOSTNAME:/home/USER/path/from/file.$1 REMOTE_HOST:/home/USER/path/to/"
    sleep 2
}

concurrent()
{   # from $1 to $2, (included $1,$2 itself), con-current $3 cmd
    start=$1 && end=$2 && cur_num=$3

    # ff_file which is opened by fd 4 will be really removed after script stopped
    mkfifo   ./fifo.$$ &&  exec 4<> ./fifo.$$ && rm -f ./fifo.$$

    # initial fifo: write $cur_num line to $ff_file
    for ((i=$start; i<$cur_num+$start; i++)); do
        echo "init time add $i" >&4
    done

    for i in a.sh b.sh c.sh ; do
        read -u 4   # read from mkfifo file
        {   # REPLY is var for read
            #echo -e "-- current loop: [cmd id: $i ; fifo id: $REPLY ]"

            sh $i
            echo "real time add"  1>&4 # write to $ff_file
        } & # & to backgroud each process in {}
    done
    wait    # wait all con-current cmd in { } been running over
}

concurrent 0 8 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值