Shell 编程-Bash 并发及并发控制一看就会

今天给伙伴们分享一下Shell 编程-Bash 并发及并发控制,希望看了有所收获。

我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!

如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。

  • 默认的情况下,Shell脚本中的命令是串行执行的,必须等到前一条命令执行完后才执行接下来的命令,但是如果我有一大批的的命令需要执行,而且互相又没有影响的情况下(有影响的话就比较复杂了),那么就要使用命令的并发执行了。

1、初始脚本

#!/bin/bash   
for (( i = 0; i < ${count}; i++ ))  
do  
       commands1  
done    
commands2 

#!/bin/bash
for ((i=0;i<5;i++));do
{
   
    
    
sleep 1;echo 1>>aa.txt && echo ”done!}
done

cat aa|wc -l
rm aa

# 这种情况下,程序顺序执行,每个循环1s,共需5s左右。

[[email protected] ~]# time bash test.sh
done!
done!
done!
done!
done!
5
real    0m5.030s
user    0m0.002s
sys     0m0.003s
  • 上面的脚本,因为每个commands1都挺耗时的,所以打算使用并发编程,这样就可以节省大量时间了。

2、修改后脚本

#!/bin/bash  
  
for(( i = 0; i < ${count}; i++ ))  
do  
{
   
    
      
        commands1  
}&  
done  
commands2 


#!/bin/bash
for ((i=0;i<5;i++));do
{
   
    
    
	sleep 1</