Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66141
  • 博文数量: 15
  • 博客积分: 404
  • 博客等级: 一等列兵
  • 技术积分: 175
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-06 18:58
文章分类

全部博文(15)

文章存档

2012年(13)

2011年(1)

2008年(1)

我的朋友

分类: Python/Ruby

2012-08-13 15:10:59

cat bak.sh
#!/usr/bin/ksh
# 实现进程并发,提高执行效率,同时能记录每个执行失败的子进程信息


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


####################### 函数定义 ########################
# 中断时kill子进程
function trap_exit
{
kill -9 0
}


# 通用执行函数
ttbulkup_indata()
{
  ttBulkCp -o -s '|' -tsformat 'YYYY-MM-DD*HH24:MI:SS' \
  -connStr "uid=xxx;pwd=xxx;dsn=xxxxx" \
  xxxx.$tab ${tab}.unl
 
if [ $? -ne 0 ]
    then
        echo "命令执行失败"
        return 1
    fi
}


trap 'trap_exit; exit 2' 1 2 3 15

#清理失败标识文件
rm -f  ${FAILURE_FLAG}

#为并发进程创建相应个数的占位
mkfifo $TMPFILE
exec 4<>$TMPFILE
rm -f $TMPFILE
{
        count=$PARALLEL
        while [ $count -gt 0 ]
        do
                echo
                let count=$count-1
        done
} >&4

#从任务列表 seq 中按次序获取每一个任务
while read tab seq
do
        read <&4
        (  ttbulkup_indata >${tab}.log || echo $seq>>${FAILURE_FLAG}; echo >&4 ) &
done<$CMD_CFG
wait
exec 4>&-

#并发进程结束后判断是否全部成功
if [ -f ${FAILURE_FLAG} ]
then
        exit 1
else
        exit 0
fi
阅读(1600) | 评论(0) | 转发(0) |
0

上一篇:[转载]DBA不得不懂的存储知识

下一篇:没有了

给主人留下些什么吧!~~