这两天光写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
时间: 2024-07-30 13:33:41

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

.net 自己写的操作Excel 导入导出 类(以供大家参考和自己查阅)

由于现在网页很多都关系到Excel 的操作问题,其中数据的导入导出更是频繁,作为一个菜鸟,收集网上零散的知识,自己整合,写了一个Excel导入到GridView ,以及将GridView的数据导出到EXCEL的类方法,以供参考和方便自己以后查阅. 1 #region 引用部分 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Web; 6 using System.Dat

main 主函数执行完毕后,是否可能会再执行一段代码?(转载)

body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bold; } h3 { fon

C# 中写得很不错的一段代码摘出来

private void LikeMyworkEvent(EditedImg img, bool islike) //点赞自己的作品 { if (ApplicationModel.userInfo != null) { OffLineController.Instance.OffLine(); return; } if(img.workId == null || img.workId == "") //这个作品还没有自己的作品id,需要先上传 { UploadUserEditedFil

MySQL 基础知识梳理学习(五)----详解MySQL两次写的设计及实现

一 . 两次写提出的背景或要解决的问题 两次写(InnoDB Double Write)是Innodb中很独特的一个功能点.因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在某一个页面(这条记录最终被插入的位置)的多个偏移位置写入某个长度的值,例如页头的记录数.槽数.页尾槽数据.页中的记录值等.这些本是一些物理操作,而Innodb为了节省日志量及其它原因,设计为逻辑处理的方式,即在一个页面上插入一条记录时,对应的日志内容包括表空间号.页面号.将被记录的各个列的值等内容,

十分钟学会写shell脚本

大家好!我是handsomecui,下面我为大家讲解一下shell脚本的写法,讲的不好的地方,欢迎大家留言拍砖. 1.在linux下会写shell脚本是非常重要的,下面我参照例子给大家展示几个脚本,顺带这学习shell 的语法: 什么时候helloworld是必不可少的,第一个脚本肯定与helloworld是离不开的: #!/bin/sh a="hello world!" num=2 echo "a is : $a num is : ${num}nd" 运行结果:

秒杀ecshop的前台写shell 0day

ECSHOP号称最大的开源网店系统,官方是这样介绍它的:"ECShop网店系统是一套免费开源的网上商店软件,无论在稳定性.代码优化.运行效率.负载能力.安全等级.功能可操控性和权限严密性等方面都居国内外同类产品领先地位. 按照我的理解,作为一款网店系统,系统的安全性应该摆在很重要的位置,但ECSHOP却好像漏洞不断.就在前几天,xhming大牛又公布了一个ECSHOP前台写shell的Oday,利用漏洞获得shell非常简单,可以说是秒杀.从官方下载的ECSHOP的最新版本也存在这个漏洞,官方还

第二十二篇:再写Windows驱动,再玩Windbg---NET

2011年到现在,就没再怎么搞过Windows驱动了. 最近, 由于项目需要, 试着改一改一个显卡驱动(KMDOD), 从实践上证明, 我在理论上对一个驱动的架构的正确与否.(USB Display = KMDOD + AVStream). 其中, KMDOD是完成显示的部分功能, 完成其中的VidPN(Video present network), 将驱动中原来的POST物理设备转变为USB物理设备. 而AVStream之所以这样提出, 完成是由于USB Video class的启发, 要不然

(实战)phpstudy的漏洞+数据库日志写shell

--真正的才智是刚毅的志向. 今天没学多少东西,直到下午在看别人的文章的时候看到了phpstudy0day的关键词,好奇就查了查.其实这个洞有一段时间了,然后就准备google试试还能不能找到有洞的网站,直接google搜phpstudy 探针 2014.结果是这样的 ,我不得不感叹google太强了. 前几页我就不打算看了,基本上已经被日穿了,或者洞补了.所以干脆向后面翻,说实话运气很重要,我刚尝试了第一个网站就成了. 首先,点开网站是这样的: 我们要用到的就是这个MySQL数据库连接检测功能

【InnoDB】插入缓存,两次写,自适应hash索引

InnoDB存储引擎的关键特性包括插入缓冲.两次写(double write).自适应哈希索引(adaptive hash index).这些特性为InnoDB存储引擎带来了更好的性能和更高的可靠性. 插入缓冲 插入缓冲是InnoDB存储引擎关键特性中最令人激动的.不过,这个名字可能会让人认为插入缓冲是缓冲池中的一个部分.其实不然,InnoDB缓冲池中有Insert Buffer信息固然不错,但是Insert Buffer和数据页一样,也是物理页的一个组成部分. 主键是行唯一的标识符,在应用程序