shell多进程实现并发

shell默认是单进程的,可以用任务后台执行的方式实现进程并行。

实现方式:使用&和wait配合实现shell多进程并行

& 进程后台执行
wait 等待前面的后台任务全部完成才往下执行

下面用两个脚本来模拟普通模式和多进程模式

普通模式

#! //bin/bash
startTime_s=`date +%s`

endTime_s=`date +%s`

for i in $(seq 1 5)
do
        sleep 10
        echo "${i} 进程执行完毕"
done

sumTime=$[ $(date +%s) - $startTime_s ]
echo "Total:$sumTime seconds"

---------------------------------------
结果:
[root@rocket ~]# bash onethread.sh 
1 进程执行完毕
2 进程执行完毕
3 进程执行完毕
4 进程执行完毕
5 进程执行完毕
Total:50 seconds

多进程模式

#! //bin/bash
startTime_s=`date +%s`

endTime_s=`date +%s`

for i in $(seq 1 5)
do
  {
        sleep 10
        echo "${i} 进程执行完毕"
  }&
done

wait
sumTime=$[ $(date +%s) - $startTime_s ]
echo "Total:$sumTime seconds"
----------------------------------------------

结果:
2 进程执行完毕
1 进程执行完毕
3 进程执行完毕
4 进程执行完毕
5 进程执行完毕
Total:10 seconds


运行过程查看进程调用情况
[root@rocket ~]# pstree |grep bash
        |-sshd-+-sshd-+-bash---sleep
        |      |      |-bash-+-grep
        |      |      `-bash---top
        |      `-sshd-+-bash---sleep
        |             |-bash---bash---5*[bash---sleep]
        |             `-bash---top

很明显效率大大提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值