shell多进程执行
程序员文章站
2022-03-22 13:15:10
...
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
上一篇: 工业互联网 第 4 章 各类工业互联网平台介绍以及OneNET平台使用
下一篇: Eclipse配置selenium报错:java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
推荐阅读
-
Android中执行java命令的方法及java代码执行并解析shell命令
-
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
-
探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句
-
用于检测进程的shell脚本代码小结
-
linux系统更新正在运行进程的可执行文件需要注意的text file busy的原因及解决方法
-
shell监控linux系统进程创建脚本分享
-
linux下监视进程 崩溃挂掉后自动重启的shell脚本
-
shell使用mysqld_multi自动做多实例从库脚本
-
windows下写的shell脚本在linux执行出错的解决办法
-
shell脚本中执行时提示“没有那个文件或目录”的解决办法