shell执⾏_shell多进程执⾏
shell在linux中,是⽤户和kernel沟通的桥梁,采⽤C编写,既是⼀种命令语⾔,也是⼀种解释型脚本语⾔,我们常写的ls,grep就是基本的shell命令。
shell脚本是将要执⾏的命令按⼀定顺序写成的⼀个⽂本⽂件,最近遇到⼀个需求,要将⼀定数量的命令快速执⾏,⽽每次执⾏都需要⼀定的时间,最终使⽤ &提交后台执⾏来完成,如:
| grep abc > &  #将所有包含abc的⾏提取到中
多个处理都这样来做,即可完成多进程并⾏执⾏,下⾯先来看串⾏执⾏的逻辑
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
{
linux循环执行命令脚本echo $i $j
sleep 1
} 1>/dev/null 2>/dev/null &
done
wait
echo "等待所有进程执⾏完成, round $i"
done

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。