这两天光写shell了,再贴一段代码,以供日后参考。

  1 #!bin/bash
  2 
  3 DEPLOY_PATH=$(cd "$(dirname "$0")"; pwd)
  4 INI_FILE=$DEPLOY_PATH'/cnedmp_etl.ini'
  5 . $INI_FILE
  6 BASE_PATH=$(cd "$(dirname "$DEPLOY_PATH")"; pwd)
  7 MAIN_PATH=$(cd "$(dirname "$BASE_PATH")"; pwd)
  8 CURRRENT_DATE=$(date "+%Y-%m-%d")
  9 CURRENT_TIME=`date -u +\%Y\%m\%d`
 10 JAR_FILE=$DEPLOY_PATH'/dailydata-1.0-SNAPSHOT.jar'
 11 LOG_PATH=$BASE_PATH'/log/'
 12 LOAD_CHECK_LOG=$BASE_PATH'/log/Load_Check.'$CURRENT_TIME'.log'
 13 PASSWORD=`yarn jar $JAR_FILE com.hypers.etl.file.specialFileProcess.BlowFish`
 14 
 15 logging(){
 16     logTime=`date "+%y/%m/%d %T"`
 17     echo "$logTime $1 $2" >> $LOAD_CHECK_LOG
 18 }
 19 
 20 #Check whether this is the first time running
 21 test -e $LOAD_CHECK_LOG || touch $LOAD_CHECK_LOG
 22 
 23 #mysql parameters
 24 mysql_user=$USERNAME
 25 mysql_password=$PASSWORD
 26 mysql_host=$HOSTNAME
 27 mysql_port=$PORT
 28 mysql_database=$DBNAME
 29 
 30 #Get WARNING LIST
 31 sql="select File_Name,Transfer_Status,Load_Status,Job_Status \
 32 from $JOBNAME \
 33 where File_Date='$CURRRENT_DATE' \
 34 and Hive_Partition != 'none' \
 35 and (Transfer_Status!=2 or Load_Status!=2 or Job_Status!=2)
 36 and Load_Status!=3
 37 and Job_Status!=3;"
 38 
 39 WARN_list=$(printf "%s\n" \
 40     "[client]" \
 41     "user=${mysql_user}" \
 42     "password=${mysql_password}" \
 43     "host=${mysql_host}" \
 44     "port=${mysql_port}" \
 45     "database=${mysql_database}" \
 46 | HOME="/sys" mysql --defaults-file=/dev/stdin -s -e "${sql}")
 47 
 48 #Use to store email cotent
 49 #email_message="File_Name, Transfer_Status, Load_Status, Job_Status"
 50 
 51 while read line
 52 do
 53         test -z "${line}"
 54         if [ $? -eq 0 ]
 55         then
 56             continue
 57         fi
 58         exist=`cat $LOAD_CHECK_LOG | grep "Job doesn't finish." | grep "$line"`
 59         test -z "${exist}"
 60         if [ $? -eq 0 ]
 61         then
 62 #            echo $line >> $LOAD_CHECK_LOG
 63 #            email_message=$email_message"\\n"$line
 64             logging WARN "Job doesn't finish. | Status: File_Name, Transfer_Status, Load_Status, Job_Status | $line"
 65         fi
 66 done <<EOF
 67 $WARN_list
 68 EOF
 69 
 70 #Get ERROR LIST
 71 sql="select File_Name,Transfer_Status,Load_Status,Job_Status \
 72 from $JOBNAME \
 73 where File_Date='$CURRRENT_DATE' \
 74 and (Load_Status=3 or Job_Status=3);"
 75 
 76 ERROR_list=$(printf "%s\n" \
 77     "[client]" \
 78     "user=${mysql_user}" \
 79     "password=${mysql_password}" \
 80     "host=${mysql_host}" \
 81     "port=${mysql_port}" \
 82     "database=${mysql_database}" \
 83 | HOME="/sys" mysql --defaults-file=/dev/stdin -s -e "${sql}")
 84 
 85 while read line
 86 do
 87         test -z "${line}"
 88         if [ $? -eq 0 ]
 89         then
 90             continue
 91         fi
 92         exist=`cat $LOAD_CHECK_LOG | grep "Job run ERROR." | grep "$line"`
 93         test -z "${exist}"
 94         if [ $? -eq 0 ]
 95         then
 96 #            echo $line >> $LOAD_CHECK_LOG
 97 #            email_message=$email_message"\\n"$line
 98             logging FATAL "Job run ERROR. | Status: File_Name, Transfer_Status, Load_Status, Job_Status | $line"
 99         fi
100 done <<EOF
101 $ERROR_list
102 EOF
103 
104 #Get Row Fail list
105 sql="select File_Name,Transfer_Status,Load_Status,Job_Status, Rows_In_Total, Rows_Succeed, Rows_Fail \
106 from $JOBNAME \
107 where File_Date='$CURRRENT_DATE' \
108 and Rows_Fail!=0 \
109 and Transfer_Status=2 and Load_Status=2 and Job_Status=2;"
110 
111 RF_list=$(printf "%s\n" \
112     "[client]" \
113     "user=${mysql_user}" \
114     "password=${mysql_password}" \
115     "host=${mysql_host}" \
116     "port=${mysql_port}" \
117     "database=${mysql_database}" \
118 | HOME="/sys" mysql --defaults-file=/dev/stdin -s -e "${sql}")
119 
120 while read line
121 do
122         test -z "${line}"
123         if [ $? -eq 0 ]
124         then
125             continue
126         fi
127         exist=`cat $LOAD_CHECK_LOG | grep "Job finished with Row Fail." | grep "$line"`
128         test -z "${exist}"
129         if [ $? -eq 0 ]
130         then
131 #            echo $line >> $LOAD_CHECK_LOG
132 #            email_message=$email_message"\\n"$line
133             logging WARN "Job finished with Row Fail. | Status: File_Name, Transfer_Status, Load_Status, Job_Status, Total Row, Succeed Row, Fail Row | $line"
134         fi
135 done <<EOF
136 $RF_list
137 EOF
138 #echo -e $email_message >> testoutput.txt;
139 #$echo -e "hello jason \\n jason" | wc -l

 

posted @ 2017-08-04 21:10  代号菜鸟  阅读(187)  评论(0编辑  收藏  举报