码迷,mamicode.com
首页 > 系统相关 > 详细

Linux初级脚本:一个简单的日志核查脚本

时间:2016-08-17 23:26:17      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:bash   脚本   

领导交代任务,要每天检查定时任务有没有执行。虽然简单但太繁琐,写了个脚本偷懒。顺便学习几个bash知识点。温故知新吧。

#检查前一天的crontab日志有没有执行JOB1和JOB2两个定时任务
#检查数据库中的数据是否及时清理完
#!/bin/bashdeclare -i DB_STATUS=0
#由于日志日期只有月、日有效,时间不作判断,因此使用date -d参数格式化时间输出。
#由于date命令用于grep,中间带空格,无法直接拼接,必须先赋予一个变量,然后用双引号标注该变量作为grep参数
declare YESTERDAY=`date -d last-day +"%b %d"`
declare PERHOUR_JOB="JOB1"
declare PERDAY_JOB="JOB2"
cat /var/log/cron|grep "$YESTERDAY"|grep "$PERHOUR_JOB" >/dev/null 2>&1
if [ $? -eq 1 ];then
 echo "Per hour job failed."
else
 echo "Per hour job success."
fi
cat /var/log/cron|grep "$YESTERDAY"|grep "$PERDAY_JOB" >/dev/null 2>&1
if [ $? -eq 1 ];then
 echo "Per day job failed."
else
 echo "Per day job success."
fi
#切换用户执行脚本,使用su - username -c参数,直接跟整个命令行。需要用双引号括起整个命令

#检查数据库内的临时表有没有内容,没有的话为正常。有的话把内容spool到chk_perday.log
su - oracle -c "sqlplus USERNAME/USERPASSWORD @/tmp/chk_perday.sql >/dev/null 2>&1"
#注意:当循环内需要对外部变量赋值,不能使用command|while read line格式
#必须先把输出保存到临时文件,然后在最后done < 文件名。
#这是因为前者while调用子进程,子进程内的赋值不带入父变量;后者在统一进程,赋值正常。
while read XM
do
 if [ XM != null ];then
  DB_STATUS=1
  echo "$XM transfer failed"
 fi
done < /tmp/chk_perday.log
if [ $DB_STATUS = 0 ];then
 echo "Data transfer success."
else
 echo "Data transfer failed."
fi
exit


本文出自 “苦瓜” 博客,请务必保留此出处http://golehuang.blog.51cto.com/7499/1839611

Linux初级脚本:一个简单的日志核查脚本

标签:bash   脚本   

原文地址:http://golehuang.blog.51cto.com/7499/1839611

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!