引入
在我们实现每天自动打包生成备份sql文件后(MySql自动备份并删除指定日期前的数据),需要对运行情况做一个邮件监控,很简单的几句脚本就可以搞定啦。
实现
-
创建
mysql_bak_warning.sh
,目录为/data/mysql_bak
# touch /data/mysql_bak/mysql_bak_warning.sh
写入:#Crontab time 00:22 # variables FILE_DIR=/data/mysql_bak/ #备份存放路径 DATE=`date +%Y_%m_%d` #获取当前系统时间 FILE_NAME="mysqldata_bak_$DATE.tar.gz" #最终保存的数据库备份文件名 FILE=${FILE_DIR}${FILE_NAME} #echo "$FILE" # 判断当天备份文件是否生成 if [ ! -f "$FILE" ]; then echo "####### $DATA #########">> /data/mysql_bak/mysql_bak.err echo "MySQL back up $DATE hava not created!" >> /data/mysql_bak/mysql_bak.err echo "MySQL back up $DATE hava not created!" | mail -s "WARN! MySQL back up $DATE hava not created!" WENTAO_Wanna@126.com else echo "MySQL back up $FILE have exist!" echo "MySQL back up successful!" fi
-
修改文件属性,使其可执行
# chmod +x /data/mysql_bak/mysql_bak_warning.sh
-
修改
/etc/crontab
# vi /etc/crontab
在下面添加
22 00 * * * root /data/mysql_bak/mysql_bak_warning.sh
表示每天凌晨00:22执行一次监控警告脚本
重新启动
crond
使设置生效
# systemctl restart crond.service #重新启动
- 手动执行效果
# sh mysql_bak_warning.sh MySQL back up /data/mysql_bak/mysqldata_bak_2016_09_06.tar.gz have exist! MySQL back up successful!
附录:shell脚本对文件和文件夹的判断
#shell判断文件夹是否存在
#如果文件夹不存在,创建文件夹
if [ ! -d "/myfolder" ]; then
mkdir /myfolder
fi
#shell判断文件,目录是否存在或者具有权限
folder="/var/www/"
file="/var/www/log"
# -x 参数判断 $folder 是否存在并且是否具有可执行权限
if [ ! -x "$folder"]; then
mkdir "$folder"
fi
# -d 参数判断 $folder 是否存在
if [ ! -d "$folder"]; then
mkdir "$folder"
fi
# -f 参数判断 $file 是否存在
if [ ! -f "$file" ]; then
touch "$file"
fi
# -n 判断一个变量是否有值
if [ ! -n "$var" ]; then
echo "$var is empty"
exit 0
fi
# 判断两个变量是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi