下面是我之前用datax任务多并发数据上云时写的shell脚本(已进行精简),注释比较详尽
运行方式 ./ty_commit_task_to.sh 10 其中10代表并发任务量,可根据自身服务器的CPU等配置进行合理输入数值
大家有需要进行其他并发进程时也可采用这个模板
#!/bin/bash
################################################################################
# 脚本名称 : ty_commit_task_to.sh 并发提交表json的datax任务
#
# 创建日期 : 2019/11/27
# 作者 : mochou
#
# 描述 : 提交datax任务上云-数据库增量数据
# 参数描述 : 1 并发数 processNum
#
# 修改记录 :
#
# 日期 操作 操作人员 描述
# ________ _______ __________________ __________________________________
#
# 2019/11/27 创建 mochou
################################################################################
if [ $# -lt 1 ] ; then
echo "please input right parameters"
exit 1;
fi
processNum=$1
## base path
basePath="/u01/work"
jsonNum=`ls ${basePath}/*.json | wc -l`
if [ ${processNum} -gt ${jsonNum} ] ;then
echo "must less than json_nums :${jsonNum}"
exit 1;
fi
# named by cur_fifo
fifoName="/tmp/$$.fifo"
mkfifo ${fifoName}
# define file ,default 3
exec 3<>"${fifoName}"
# save fd is ok
rm -rf ${fifoName}
# define numbers
for ((i=1;i<=${processNum};i++)) do
echo >&3
done
for file in `ls ${basePath}/*.json` ;do
# read null
read -u3
{
# run json task
python datax.py --jvm="-Xms4g -Xmx4g" ${file} 2>&1 >> ${file}.log
result=$?
if [ ${result} -eq 0 ] ;then
echo "succ"
else
echo "fail"
fi
sleep 1
# write null end
echo >&3
}&
done
# close read
exec 3<&-
# close write
exec 3>&-