Linux下bash脚本:计算重新索引Table时间(一)

2014-11-24 08:54:31 ? 作者: ? 浏览: 0

这是曾经工作中自己编写的一个Bash脚本,且必须处理已存在的文件,即计算每个Table重新索引所花费的时间,并找出大于30分钟的重索引记录,并邮件发送至指定邮箱。格式如下(此为一小部分,文件名为Reindex.txt):
---------------------------------------------------------------------------------
Fri Sep 24 05:00:01 MYT 2010: Script /data/crondir/postgres-reindeing.sh starting
Fri Sep 24 05:06:01 MYT 2010: Reindexing of database 'DB' 'tblbmc_emergency_alert' start
Fri Sep 24 05:06:07 MYT 2010: Reindexing of database 'DB' 'tblbmc_emergency_alert' Complete
Fri Sep 24 05:06:07 MYT 2010: Reindexing of database 'DB' 'tblbmc_bat_activity_info' start
Fri Sep 24 08:00:47 MYT 2010: Reindexing of database 'DB' 'tblbmc_bat_activity_info' Complete
Fri Sep 24 08:00:47 MYT 2010: Reindexing of database 'DB' 'tblbmc_incoming_data' start
Fri Sep 24 08:02:20 MYT 2010: Reindexing of database 'DB' 'tblbmc_incoming_data' Complete
------------------------------------------------------------------------------------


我主要运用awk和sed等方法,提取出如05:06:01的时间start 和05:06:07 Complete部分,后者减去前者即得时间差值。此处贴出Bash脚本代码,其中有简单英文注释,方法比较拙劣,请勿见笑。
------------------------------------------------------------------------------------
#!/bin/bash


#delete the first line & last line with sed
sed '1d;$d' Reindex.log >Result.txt


#clear $1 with awk
awk '{$1=""}{print }' Result.txt >Result1.txt


awk '{$1=""}{print }' Result1.txt >Result2.txt


awk '{$1=""}{print }' Result2.txt >Result3.txt


#clear $3 with awk
awk '{$3=""}{print }' Result3.txt >Result4.txt


#transfer the format "h:m:s" to "s"
awk -F '[: ]+' '{print ($1*3600+$2*60+$3)}' Result4.txt>Result5.txt


#transfer all the lines to one line
paste -d " " -s Result5.txt >Result6.txt
#another way for transferring all the lines to one line
#awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' Result5.txt >Result6.txt


#compute the cost time for each table
awk '{$1=$2-$1} {print "Reindexing of database DB --tblbmc_emergency_alert-- "++$1 " s"}' Result6.txt >ResultFinal.txt
awk '{$1=$4-$3} {print "Reindexing of database DB --tblbmc_bat_activity_info-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$6-$5} {print "Reindexing of database DB --tblbmc_incoming_data-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$8-$7} {print "Reindexing of database DB --tblbmc_bat_all_boundary-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$10-$9} {print "Reindexing of database DB --tblbmc_bat_all_technical-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$12-$11} {print "Reindexing of database DB --tblbmc_bat_allextendedparam-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$14-$13} {print "Reindexing of database DB --tblbmc_bat_allextendedparam1-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$16-$15} {print "Reindexing of database DB --tblbmc_bat_allextendedparam2-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$18-$17} {print "Reindexing of database DB --tblbmc_bat_allibuttonparam-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$20-$19} {print "Reindexing of database DB --tblbmc_bat_allidentity-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$22-$21} {print "Reindexing of database DB --tblbmc_bat_allmccparam-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$24-$23} {print "Reindexing of database DB --tblbmc_bat_alloperparam-- "++$1 " s"}' Result6.txt >>ResultFinal.txt
awk '{$1=$26-$25} {print "Reindexing of database DB --tblbmc_bat_allphone-- "++$1 " s"}' Result6.tx

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: