shell实现查询数据库发送邮件报警
发布日期:2021-04-30 21:04:06 浏览次数:113 分类:精选文章

本文共 1463 字,大约阅读时间需要 4 分钟。

功能描述

本脚本用于查询数据库表中记录数,检查是否存在昨日新增数据。若无新增数据且任务未计算失败,系统将发送邮件通知相关人员。

脚本文件

#!/bin/bash# 参数个数校验if [ $# -lt 1 ] then     echo "参数错误~ 输入执行日期YYYYMMDD"    exit fi # 创建日志文件LOG_FILE_NAME="/opt/monitor/指标任务-$1.log"# 检查日志文件是否存在if [ ! -e "$LOG_FILE_NAME" ] then     touch $LOG_FILE_NAME fi LOG=$(date "+%Y-%m-%d %H:%M:%S")echo $LOG # 记录日志时间current_time=$(date +'%Y%m%d')echo $current_time # 获取当前时间戳# 设置查询开始时间if [ -n "$1" ] then     start_time=$1 else     start_time=$(date -d "1 days ago" +%Y%m%d) fi echo $start_time # 输出开始时间# SQL 查询总数query_total_num_sql="select count(1) from kg_SectorStat where STAT_DATE > '${start_time}' and STAT_DATE < '${current_time}'"total_num=$(/usr/bin/mysql -h192.168.0.189 -P3306 -uroot -p898 kongguan -s -e "${query_total_num_sql}")# 判断总数是否小于1if [ 0 -ge ${total_num} ] then     end_time=$(date +%Y-%m-%d_%H:%M:%S)    echo -e "${start_time} 任务运行失败:$end_time\n" >> $LOG_FILE_NAME     # 发送通知邮件    echo -e "${start_time} 日任务运行失败!" | /bin/mail -s "${current_time} 日发电量指标任务通知" wangjzh@sarnath.cn fi

定时执行

脚本可通过以下命令定时执行:

./sendmaildb.sh $(date -d "1 days ago" +%Y%m%d)  # 昨天日期

默认运行时间为每晚22:00,使用以下cron表达式配置任务调度:

0 22 */1 * *  /opt/spark/sendmaildb.sh $(date -d "1 days ago" +%Y%m%d)

代码解释

  • 参数校验:脚本首先检查执行时的参数个数,若缺少必要参数则提示错误信息并退出程序。
  • 日志文件管理:创建或检查日志文件,确保日志存储路径存在。
  • 时间获取:获取当前时间戳和执行日期,用于后续查询和日志记录。
  • 数据库查询:根据提供的起始时间和结束时间查询数据库中记录数。
  • 数据校验:若无新增数据且任务未失败,记录日志并发送通知邮件。
  • 定时执行:通过cron表达式设置每日22:00运行脚本,确保数据及时处理。
  • 注意事项

    • 脚本参数需按照 YYYYMMDD 格式传递执行日期
    • 确保数据库连接信息及权限设置正确
    • 定时任务可通过系统任务调度或监控工具配置
    上一篇:用mmap实现磁盘读写
    下一篇:HTML--标签

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2026年05月25日 16时34分07秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章