概述
shell在linux中,是用户和kernel沟通的桥梁,采用C编写,既是一种命令语言,也是一种解释型脚本语言,我们常写的ls,grep就是基本的shell命令。
shell脚本是将要执行的命令按一定顺序写成的一个文本文件,最近遇到一个需求,要将一定数量的命令快速执行,而每次执行都需要一定的时间,最终使用 &提交后台执行来完成,如:
cat test.txt | grep abc > abc.txt & #将test.txt所有包含abc的行提取到abc.txt中
多个处理都这样来做,即可完成多进程并行执行,下面先来看串行执行的逻辑
1.串行执行
#!/bin/bash
for i in `seq 1 10`
do
echo $i
sleep 1
done
执行后每隔一秒执行一次,大概10s执行完成。
2.并行执行
执行语句后加上 &即可提交后台进程执行
#!/bin/bash
for i in `seq 1 10`
do
{
echo $i;
sleep 1
} &
done
wait
echo "等待所有进程执行完成"
并行执行,1s左右即可完成
如果希望串行与并行同时存在,可按如下方式采用两层for循环进行:
#!/bin/bash
for i in `seq 1 10`
do
for j in `seq 1 5`
do
{
echo $i $j
sleep 1
} &
done
wait
echo "等待所有进程执行完成, $i"
done
3.标准输出与标准错误不输出到屏幕
如果返回的内容过多,可以在执行语句之后加上1>/dev/null 2>/dev/null将标准输出与标准错误输到黑洞
for i in `seq 1 10`
do
for j in `seq 1 5`
do
{
echo $i $j
sleep 1
} 1>/dev/null 2>/dev/null &
done
wait
echo "等待所有进程执行完成, round $i"
done
最后
以上就是单纯羽毛为你收集整理的shell多进程执行的全部内容,希望文章能够帮你解决shell多进程执行所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复