linux系統實現DataX任務進程多併發以及自定義併發數

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章