shell脚本多进程

Linux 王初一 3个月前 (09-19) 1281次浏览 已收录 6个评论 扫描二维码

shell 脚本一般在执行过程中就一个进程,从头到尾

下面配置 shell 脚本执行过程中多个进程同时执行

#!/bin/bash

for ((i=1;i<=10;i++))
do
(
  echo "$i"
  sleep 10
) &
done
wait
echo -E "########## $SECONDS ##########"

注:

$SECONDS:是执行完脚本所用的时间   

wait:是等待所有的进程执行完毕

执行结果   

[root@wcy ~]# bash test.sh 
1
2
3
4
5
6
7
8
9
10
########## 10 ##########

进程查看

[root@wcy ~]# ps -ef | grep test.sh 
root 1764 1565 0 19:23 pts/1 00:00:00 bash test.sh
root 1765 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1766 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1767 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1770 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1772 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1773 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1774 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1776 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1777 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1778 1764 0 19:23 pts/1 00:00:00 bash test.sh
root 1786 1708 0 19:23 pts/2 00:00:00 grep test.sh

 

[root@wcy ~]# ps -ef | grep test.sh | grep -v grep | wc -l
11

查看同一时刻多少个 sleep 在跑

[root@wcy ~]# ps -ef | grep sleep | grep -v grep 
root 2168 2165 0 21:59 pts/1 00:00:00 sleep 10
root 2169 2166 0 21:59 pts/1 00:00:00 sleep 10
root 2172 2167 0 21:59 pts/1 00:00:00 sleep 10
root 2174 2171 0 21:59 pts/1 00:00:00 sleep 10
root 2175 2173 0 21:59 pts/1 00:00:00 sleep 10
root 2176 2170 0 21:59 pts/1 00:00:00 sleep 10
root 2179 2177 0 21:59 pts/1 00:00:00 sleep 10
root 2181 2178 0 21:59 pts/1 00:00:00 sleep 10
root 2182 2180 0 21:59 pts/1 00:00:00 sleep 10
root 2184 2183 0 21:59 pts/1 00:00:00 sleep 10

 

[root@wcy ~]# ps -ef | grep sleep | grep -v grep  | wc -l
10

多进程的 shell 脚本可以用于并行执行多任务

#!/bin/bash
for ((i=1;i<=1;i++))
do
(
for ((num=1;num<=100;num++))
do
  echo "task1-- $num"
  sleep 1
done
) &
(
for ((ber=1;ber<=100;ber++))
do
  echo "task2-- $ber"
  sleep 1
done
) &
done
wait

效果,两个同时执行

[root@wcy ~]# bash duo.sh 
task2-- 1
task1-- 1
task2-- 2
task1-- 2
task2-- 3
task1-- 3
task2-- 4
task1-- 4
········

脚本进程

[root@wcy ~]# ps -ef | grep duo.sh | grep -v grep 
root 2221 1491 0 22:13 pts/0 00:00:00 bash duo.sh
root 2222 2221 0 22:13 pts/0 00:00:00 bash duo.sh
root 2223 2221 0 22:13 pts/0 00:00:00 bash duo.sh

同时执行的进程

[root@wcy ~]# ps -ef | grep sleep | grep -v grep 
root 2357 2223 0 22:14 pts/0 00:00:00 sleep 1
root 2358 2222 0 22:14 pts/0 00:00:00 sleep 1

 


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:shell 脚本多进程
喜欢 (2)
[313176056@qq.com]
分享 (0)
王初一
关于作者:
不以物喜不以己悲
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(6)个小伙伴在吐槽
  1. 最近要准备增加系统、存储、文件系统的运维工作了,赶紧来这里学习一些能装B的技术···工作舒适区被捅破了
    云顶天的世界2018-10-10 17:28 回复 Windows 10 | Chrome 63.0.3239.132
    • IT敢客
      这好像是我们公司接下来的准备内容啊,马上接储存扩容了!
      IT敢客2018-10-10 17:30 回复 Windows 10 | Maxthon 浏览器5.5
      • 这些原来都不是我的日常的工作范围,虽然有所了解但是并不深入,现在领导要求大家能从全局开展工作,要准备开始重新接触了。 :evil:
        云顶天的世界2018-10-10 17:33 回复 Windows 10 | Chrome 63.0.3239.132
        • IT敢客
          多些“防身”技能,?
          IT敢客2018-10-10 17:34 回复 Windows 10 | Maxthon 浏览器5.5
  2. 运维是个细心活,来不得一点马虎,加油!
    博客大全2018-10-07 09:38 回复 Windows 10 | Chrome 69.0.3497.100
  3. php进程在大型应用中也是用得较多的。
    夏日博客2018-09-20 11:12 回复 Windows 7 | Chrome 63.0.3239.132