并发查询,用&只是放到后台去查询了,依旧是顺序执行 并没有并发哈以下脚本是参考网上说明后改写的#定义并发进程数量PARALLEL=3#定义临时管道文件名TMPFILE=$$.fifo#将要查询的表名写入其中CMD_CFG=task.cfg#定义失败标识文件FAILURE_FLAG=failure.log# 中断时kill子进程fun...
显示全部并发查询,用&只是放到后台去查询了,依旧是顺序执行 并没有并发哈
以下脚本是参考网上说明后改写的
#定义并发进程数量
PARALLEL=3
#定义临时管道文件名
TMPFILE=$$.fifo
#将要查询的表名写入其中
CMD_CFG=task.cfg
#定义失败标识文件
FAILURE_FLAG=failure.log
# 中断时kill子进程
function trap_exit
{
kill -9 0
}
# 执行函数
exec_cmd()
{
dbaccess db1 < select * from $1;
!
if [ $? -ne 0 ]
then
echo "命令执行失败"
return 1
fi
}
trap 'trap_exit; exit 2' 1 2 3 15
rm -f ${FAILURE_FLAG}
exec 4<>$TMPFILE
rm -f $TMPFILE
#给管道命名
exec 4<>$TMPFILE
#读取并发数目,并判断并发多少次
{
count=$PARALLEL
while [ $count -gt 0 ]
do
echo
let count=$count-1
done
} >&4
while read task
do
read <&4
( exec_cmd ${task} || echo ${task}>>${FAILURE_FLAG} ; echo >&4 ) &
done<$CMD_CFG
wait
exec 4>&-
#并发进程结束后判断是否全部成功
if [ -f ${FAILURE_FLAG} ]
then
exit 1
else
exit 0
fi
收起