写一个shell脚本来检测某个数据库的表单生成量。
#!/bin/bash
#数据库监控表单脚本
#2023-5-12
# 数据库连接信息
DB_HOST="localhost"
DB_PORT="3306"
DB_NAME="your_database_name"
DB_USER="your_database_user"
DB_PASS="your_database_password"
# 表单信息
TABLE_NAME="your_table_name"
EXPECTED_ROWS=5000
# 获取当前日期
TODAY=$(date +%Y-%m-%d)
# 查询当天生成的数据量
QUERY="SELECT COUNT(*) FROM ${TABLE_NAME} WHERE DATE(create_time) = '${TODAY}'"
ROWS=$(mysql -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASS} ${DB_NAME} -se "${QUERY}")
# 判断是否达到期望值
if [ ${ROWS} -lt 4500 ] || [ ${ROWS} -gt 5000 ]; then
echo "警告:${TABLE_NAME} 表单生成数据量异常,当前生成量为 ${ROWS} 条"
fi
使用方法:
将脚本保存为一个文件(比如 monitor.sh);
修改脚本中的数据库连接信息、表单信息和期望值信息;
将脚本添加到定时任务中,每天执行一次即可。
在终端中打开 crontab 文件
crontab -e
编写定时任务
在 crontab 文件中,你可以添加如下的一行,以创建一个每天运行一次的定时任务:
0 0 * * * /mnt/shell/monitor.sh
0 0 * * *
表示该任务将在每天的午夜(即 0 点)执行,/path/to/monitor.sh
是要执行的脚本的完整路径。你需要将该路径替换为你实际的 monitor.sh 脚本所在的完整路径。
保存并退出 crontab 文件
在你完成定时任务的编写后,输入 CTRL + X
以退出 crontab 文件编辑。
在保存修改之前,系统将要求你确认是否保存,这时可以输入 y
回车来保存修改。
你还可以通过 crontab -l
命令来查看当前系统中已经存在的定时任务。如果你希望暂停某个定时任务,可以使用 crontab -r
命令,将其从系统中移除。
#!/bin/bash
# 设置需要检测的日期时间
today=$(date "+%Y-%m-%d")
hour=$(date "+%H")
# 获取数据库表单的生成量
count=$(mysql -uroot -ppassword -e "SELECT COUNT(*) FROM table WHERE date='$today' AND hour='$hour';")
# 设置报警阈值
threshold_min=4500
threshold_max=5000
# 判断生成量是否超过阈值
if [ $count -lt $threshold_min ] || [ $count -gt $threshold_max ]; then
# 发送邮件报警
echo "Attention! Today's database form count is $count, which is less than $threshold_min or greater than $threshold_max." | mutt -s "Database Form Count Alert" -- [email protected]
fi
设置邮箱报警。