#! /bin/bash
header="======================================================================"
current=`date '+%s'`
pids=''
filelist=()
f=1
num=0
result=""

echo -e "\033[32m开始时间: $current \033[0m"

function runDataXJob(){
    echo $header
    echo -e "\033[32m开始进行全量离线任务 \033[0m"
    json_file=`ls $BASE_PATH/etl/datax_job`
    index=0
    for fileName in $json_file
    do
        if [ -d $1"/"$fileName ]
        then
             ergodic $1"/"$fileName
        else
            filelist[$index]="${fileName%.*}"
            echo $BASE_PATH/etl/datax_job/$fileName
		    datax start $BASE_PATH/etl/datax_job/$fileName > /dev/null &
	        pids="$pids $!"
        fi
        ((index++))
    done
#     echo $pids
}

function checkDataXJob(){
    while [ $f -eq 1 ]
    do
        index=0
        for pid in $pids
        do
            sleep 5
            if ps ax | grep -v grep | grep $pid > /dev/null; then
                num=$[$num+1]
                result="$result| ${filelist[$index]} 正在离线 "
            else
                result="$result| ${filelist[$index]} 离线结束 "
            fi
            ((index++))
        done
#         echo -en "\033[31m$result   \033[0m\r\033[?25l"
        echo -en "\033[31m$result   \033[0m\r"
        if [ $num -eq 0 ]; then
            f=0
        else
            f=1
        fi
        num=0
        result=""
    done
    index=0
    fail=0
    success=0
    for pid in $pids
    do
        wait $pid
        if [ $? -ne 0 ]; then
            result="$result| ${filelist[$index]} 离线失败 "
            ((fail++))
        else
            result="$result| ${filelist[$index]} 离线成功 "
            ((success++))
        fi
        ((index++))
    done
    echo -e "\033[31m$result\033[0m"
    echo "----------------------------------------------------------------------"
    echo -e "\033[32m成功: $success 个\033[0m"
    echo -e "\033[31m失败: $fail 个\033[0m"
    if [ $fail -ne 0 ]; then
        exit 1
    fi
}


runDataXJob
checkDataXJob
