shell文件中,多进程运行

来源:互联网 发布:zol软件下载中心 编辑:程序博客网 时间:2024/06/05 01:54



一直苦恼一个问题:shell编程中,当一个任务完成时,接下来可以同时有两个任务可以运行,这两个任务互不影响。所以想当第一个任务完成后,同时启动后面的两个任务,不知到shell中如何同时启动。


今天解决了:使用后台运行的方式 &。

举个例子说明比较好。

有一个总执行的all.sh,有三个任务shell,分别是aa.sh, bb.sh,cc.sh。

当运行玩aa.sh后,同时运行bb.sh,cc.sh。


all.sh

#!/bin/bashsh aa.shsh bb.sh &sh cc.sh &

aa.sh

#!/bin/bashecho 'start'sleep 10echo 'end'

bb.sh

#!/bin/bashecho 'bb start 'sleep 10echo 'bb end'

cc.sh

#!/bin/bashecho 'cc start 'sleep 10echo 'cc end'


运行 all.sh就实现了这种功能。


有了这种方式,我们就可以简单的进行性能测试了。

例如一种情形:100个人同时访问一个页面10次(并发):

#!/bin/bashecho 'start'echo 'end'function hello(){        for j in {1..10}        do                sleep 1                echo "${1}----------------------------$j"                 #wget www.xxxxxx.com        done}for i in {1..100}do        hello $i & done



等待并发程序都结束之后,再执行后面的程序,使用wait命令

sh aa.sh &p1=$!sh bb &p2=$!wait $p1 && wait $p2