今天给伙伴们分享一下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</