Linux初级脚本:一个简单的日志核查脚本
2016-08-17 16:42
274 查看
领导交代任务,要每天检查定时任务有没有执行。虽然简单但太繁琐,写了个脚本偷懒。顺便学习几个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
相关文章推荐
- 一个简单的用于嵌入式Linux开发的C调试日志打印接口
- 一个同步日志系统的简单实现 log for c (linux 平台)
- linux之 从0构建一个简单的小linux详解(脚本实现)
- 自行控制loadrunner的socket协议性能测试 (转) 一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字
- 新写了一个简单的日志监控shell脚本(之前的问题已经修复)
- 一个简单实用的linux脚本
- Linux脚本设计练习2——一个游戏菜单的简单实现
- ps_mem:一个用于精确报告 Linux 核心内存用量的简单 Python 脚本
- Linux下简单的安全日志统计脚本
- 一个简单的linux脚本创建过程
- 【sehll学习】linux运维一个简单shell脚本监控系统内存
- Linux下实现一个简单进度条和shell脚本实现彩色进度条
- 一个简单的日志切割脚本
- Linux平台自动部署脚本的一个简单例子
- 一个简单的去掉程序行号的linux脚本
- linux一个清除日志的脚本
- 一个简单的 linux下的备份脚本
- ps_mem:一个用于精确报告 Linux 核心内存用量的简单 Python 脚本
- 一个简单的linux下写日志的类
- 我的第一个在Linux中的极为简单的Python脚本