下面是我之前用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>&-