并发脚本修改

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值