Shell项目开发总结
读取配置文件:
source `dirname $0`/ReadIni
设置errorkey(用于错误判断):
set ERROR_KEYS = 'message:|failed|fail|error|overflow|Unexpected|rollback|invalid|not found|incorrect|suspend|denied|failure'
输出到logfile:
echo "===== `date '+%d/%m/%Y %H:%M:%S'` - Generate REPORT_NAME report starting ... ..." | tee -a $LOGFILE
取每个月的第一个工作日:
set GEN_DAY = `cal $MON $YEAR | awk 'NR<3{next} {if(NF==1){next;print $1;exit} if(NF<7){ print $1;exit} print $2;exit}'`
set FIRST_WORKING_DAY = `echo ${YEAR}${MON}0${GEN_DAY}`
shell中执行sql:
echo "Truncate table I_EXCEPT_RPT." | tee -a $LOGFILE
runsql << EOF_CLR_DATA >! $TMP_EXTRACT_FILE
set nocount on
go
truncate table EXCEPT_RPT
go
EOF_CLR_DATA
if ("`egrep -l -i '$ERROR_KEYS' $TMP_EXTRACT_FILE`" == '') then
echo "Truncate the data in EXCEPT_RPT succeed" | tee -a $LOGFILE
else
echo "Truncate the data in EXCEPT_RPT failed" | tee -a $LOGFILE
cat $TMP_EXTRACT_FILE >> $LOGFILE
set RETURN_VALUE = 1
goto eoj_skip
endif
执行存储过程:
runsql << GEN_RPT >! $TMP_RPT_FILE
set nocount on
go
exec sp_gen_xx_except_rpt '${REPORT_FREQUENCY}','${GENERATION_DATE}'
go
GEN_RPT
用sed替换,删除:
sed 's/^[ ]*//' $TMP_EXTRACT_FILE | sed '/---/d' | sed '/return status/d' > $MAIL_CONTENT
插入header:
sed "1 i\\
`sed '/---/d' $TMP_EXTRACT_FILE | sed -n '2p' | sed 's/^[ ]*//g'`" $DAT/$FNAME > /tmp/RPT.tmp
从数据库中导出data(sybase bcp):
# bcp out the view on EXCEPT_RPT to a tab-delimited file
$SYB/bin/bcp $DB..$BCP_VIEW out $DAT/$FNAME -U$NAME -P$PASSWD -S$SERVER -c >>! $DAT/$FNAME.bcpout
把文件数据导入sybase数据库:
#文件格式为:“|” 分割
#如:xxxx|dddd|1111
$SYB/bin/bcp $DBNAME..${TABLENAME}_UP in $WRK/$RCS_FILENAME -U$LOGIN -P$PASSWD -S$DSQUERY -t'|' -c -b1000 >! $WRK/$FILENAME.bcpin.$TMSTMP
发送email:
uuencode $DAT/$FNAME $FNAME | cat $MAIL_CONTENT - | mailx -s "${MAIL_SUBJECT}" $MAIL_LIST
echo "$REPORT_NAME report has been sent to $MAIL_LIST. " | tee -a $LOGFILE
Clean up Logs:
echo "" | tee -a $LOGFILE
echo "Cleaning up the LOG files created 14 days ago ..." | tee -a $LOGFILE
find $LOG/${REPORT_NAME}* -mtime +14 -type f -exec rm {} \;
echo "Cleaning up the Report files created 30 days ago ..." | tee -a $LOGFILE
find $DAT/*$FNAME* -mtime +30 -type f -exec rm {} \;
Exception handle:
eoj_skip:
echo "" | tee -a $LOGFILE
echo "===== `date '+%d/%m/%Y %H:%M:%S'` - Generate $REPORT_NAME report end" | tee -a $LOGFILE
exit $RETURN_VALUE
待续中。。。。
打印执行时间:
echo "" | tee -a $LOGFILE
echo "*****************************************" | tee -a $LOGFILE
echo "DONE : $0 $*" | tee -a $LOGFILE
echo "-----------" | tee -a $LOGFILE
echo "Start time : $startime" | tee -a $LOGFILE
echo "Finish time : `date '+%D %T' ` " | tee -a $LOGFILE
分享到:
相关推荐
采用案例驱动模式展开讲解知识点,即介绍案例->案例涉及技术->展开知识点->总结的方式 本书作者从事多年一线开发和培训,讲解知识点力求细致,深入浅出 目 录 前言 第1章 Android操作系统概述 1 1.1 Android...
112_业务数仓_业务数仓项目总结.avi/ {1 S. ^* Y" b# M) | 113_业务数仓_即席数仓课程介绍.avi 114_即席数仓_Presto简介.avi+ r. E# z! Z4 t% o+ r8 }7 Q 115_即席数仓_Presto安装及使用.avi 116_即席数仓_Presto...
│ ├12 - Shell命令机制1.mp4 │ ├13 - Shell命令机制2.mp4 │ ├14 - Shell命令机制3.mp4 │ ├15 - Shell命令机制4.mp4 │ ├16 - Linux命令类库机制及常用命令_命令操练1.mp4 │ ├17 - 命令操练2.mp4 │ ├18 ...
09-hdfs的shell操作.avi 10-hadoop集群搭建的无密登陆配置.avi 第二天 hdfs的原理和使用操作、编程 01-NN元数据管理机制.avi 02-NN工作机制2.avi 03-DN工作原理.avi 04-HDFS的JAVA客户端编写.avi 05-...
4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于Hadoop和MapReduce实现的朴素贝叶斯分类器源码+...
026 Eclipse导入Hadoop源码项目 027 HDFS 设计目标 028 HDFS 文件系统架构概述 029 HDFS架构之NameNode和DataNode 030 HDFS 架构讲解总结 031 回顾NameNode和DataNode 032 HDFS架构之Client和SNN功能 033 HDFS Shell...
附录1电子科技大学清水河校区802.x上网认证脚本——作者lili(可以用来做学习Shell编程的实例哦) 102 附录2针对mini2440开发板的输入引擎文件mini2440.h和mini2440.c(原创) 108 附录3 VIM配置文件~/.vimrc内容 116
,,将开发过程中的经验总结出来。关于此项目的开发过程,我会记录在自己的博客上。 本项目使用的工具如下 IDE我使用webstorm(当然使用sublime也是可以的,纯粹个人喜好) 初步方案采用CommonJS + Webpack(所以...
项目概述:本项目是一个基于Python语言的职位画像系统,集成了Scrapy与Django框架,实现了数据抓取与...总结:此项目是一个功能完善的职位画像系统,能够为用户提供直观、实时的职位市场动态,兼具技术深度与实用价值。
百度地图开发java源码 tmp #inertiaSearch 2016年写的代码,现在觉得思路有很多提升的地方,但是毕竟努力过,还是贴在Readme.md 里面 本项目是单人组队参加第二届阿里中间件性能挑战,,使用Hash + bPlusTree + nio ...
----------VC应用开发 [Visual.C..编程技巧精选500例]源代码. 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件...
#Android 终端模拟器Android Terminal Emulator 是一个终端模拟器,用于与内置的 Android shell 进行通信。 它模拟了 Digital ... 有关总结的详细信息,请参阅 [Android Terminal Emulator 上的开发总结] ( )过程。
shopexDocument商派产品在实践中总结的文档目前定位为总结给客户实施和开发过程中遇到的问题和解决方案。官方文档地址老版新版安装部署系统环境要求无特殊说明,环境参考ecstore中的 ecstore环境要求ecstoreerpcrmb...
项目需求 前端下单,后台接受,并立即做出提示。例如:美团外卖,客户端下单成功后,商家端就会立即有接单语音提示。 开发环境 thinkphp5.0 phpsocketio (由于需要启动socket服务,所以需在能够满足shell的环境下...
java简易商城源码利雅得导游安卓应用(测试项目) 描述 一个非常简单的 Android 应用程序,允许用户在 4 个类别(博物馆、清真寺、购物中心、公园)之间导航。 每个类别都有一个地点列表,点击它会切换到谷歌地图,...
此文档主要记录自己在二进制方向的学习,包括基础知识的学习、CTF题目的练习和部分开发基础的积累。 学习进度 Week 1-2 实现简单的SGI STL,完成了分配器、迭代器、萃取机制以及vector容器 代码实现: 结题测试:...
我有幸一直参与Tcl核心技术的开发活动,希望通过本书能够将自己使用Tcl时获得的切身体会表达出来。 为什么要使用Tcl 作为一种脚本语言,Tcl与其他的Unix shell语言,如Bourne Shell(sh)、C Shell(csh)、Korn Shell...
另外,在PHP的速度满足业务需求后,人们对项目的稳健性、可升级性提出了新的要求。 本书为大家全面介绍了PHP 5中的新功能、面向对象编程方法及设计模式,还分析阐述了PHP 5中新的数据库连接处理、错误处理和XML处理...
3.6 开发环境配置总结 66 第4章 文件系统 67 4.1 概述 67 4.1.1 文件系统的基本概念 67 4.1.2 文件系统主要API 68 4.2 磁盘和驱动器管理 70 4.2.1 遍历卷并获取属性 70 4.2.2 操作驱动器挂载点 76 ...
LFScm-SCMLinux(ScratchLinux衍生产品) Linux From SCM是Linux发行版,其中源... 我总结了Linux From Scratch项目的目标,以“教系统管理员如何将各种软件组件组合在一起构成一个正在运行的操作系统”。 我将SCM中