shell并发脚本

我们写程序时需要压力测试,写一个并发脚本可以简单地测试代码。

并发脚本的关键是建立一个管道文件,即fifo类型的文件,然后赋一个文件描述符给他,mkfifo $FILE通过操作文件描述符来实现 exec 4<>$FILE。主要的功能就是:往描述符加入多少enter操作表示类似有多少线程存在,每次从中操作完以后再补上,当需要循环的次数超过线程存在数,则需要循环的次数允许每次只能取线程数。关键是以 &在后台运行,如果没有这个在后台执行的操作话,就和一般的顺序事件没有区别了,这个很重要。

关于trap这个俘获信号的操作,注意 单引号和双引号的命令效果是不同的。

#定义并发进程数量
PARALLEL=3
#定义临时管道文件名
TMPFILE=$$.fifo
#定义导出配置文件全路径名
CMD_CFG=$HOME/vhost/ptest.cfg
#定义失败标识文件
FAILURE_FLAG=$HOME/vhost/failure.log

function trap_exit
{
kill -9 0
}

trap 'trap_exit; exit 2' 1 2 3 15

mkfifo $TMPFILE
exec 4<>$TMPFILE
rm -f $TMPFILE
{
while [ $PARALLEL -gt 0 ];do

    echo
    let PARALLEL=$PARALLEL-1
done
} >&4
for ((i = 0; i < 5; i++));
do
        read <&4
        #if not include & after ),will become the sequnces afairs,not paraller
        (  echo our ; echo >&4 ; sleep 3s ) &
done
wait
exec 4>&-
exit 0
 
http://chenxy.blog.51cto.com/729966/304620

你可能感兴趣的:(shell并发脚本)