开始

在很多实践中,我们使用脚本通常情况下只能同时运行一个任务,但我们的需求往往不可能等脚本任务一个一个完成,这样既浪费时间又造成有脚本取值运行超时的风险。

shell实现起来并发和其他编程语言类似,比如Go...等等,下面我用具体的代码来实现效果:

num_list='1 2 3 4 5 6 7 8 9 10'

function connect(){

    # sleep 实际环境中不需要;这里为了模拟
   echo $1;sleep 60

}

for i in $num_list;do

    # 任务放入后台继续执行;不影响其他任务
    connect $i &

done

sleep 1
上述代码我定义了数字列表分别是数字1-10,基本思路是,我们实现一个函数,函数里面就是要做的动作,通过for循环获取任务数量返回给函数作为入参参数并放入后台run起任务。

这时,代码要做的就是同时将数字打印出来,而不是依次,类似于运行效果等于10个任务同时运行。我们来执行模拟看下结果:

sh demo.sh &>/dev/null &
ps -ef|grep -v grep|grep demo.sh
模拟

可以注意到,我们执行脚本并放到后台后,通过ps -ef查看脚本进程,脚本进程返回10个任务。

当然,与其他编程语言一致,你也可以定义一个数字范围,来限制并发数量等等。

最后修改:2023 年 10 月 15 日
如果觉得我的文章对你有用,请随意赞赏