一、一键安装jdk
vim jdk_install.sh
#!/bin/bash
#1.提示安装jdk
echo "现在开始安装jdk"
slepp 1
#2.删除centos自带jdk
oldjava=$(rpm -qa | grep java)
for old in ${oldjava}
do
#echo $old
rpm -e --nodeps $old
done
#3.创建安装目录/export/server,进入安装目录
java_path="/export/server"
if [ ! -d $java_path ]
then
mkdir -p $java_path
fi
#4.解压jdk安装包
tar -xvf /export/software/jdk-8u241-linux-x64.tar.gz -C $java_path
#5.设置环境变量
JAVA_HOME="/export/server/jdk1.8.0_241"
grep "JAVA_HOME" /etc/profile
if [ $? -ne 0 ]
then
echo "--------------JAVA_HOME------------------"
echo 'export JAVA_HOME=/export/server/jdk1.8.0_241' >> /etc/profile
echo "--------------PATH------------------------"
echo 'export PATH=:$JAVA_HOME/bin:$PATH' >> /etc/profile
fi
#6.加载环境变量
source /etc/profile
#7.提示用户安装成功,查看jdk安装版本
echo "安装成功!!!"
java -version
执行脚本
chmod +x jdk_install.sh
. /jdk_install.sh
二、数据库定时备份
需求
1)每天凌晨1:15备份 数据库 itcast_shop到 /export/data/db目录
2)备份开始和备份结束能够给出相应的提示信息
3)备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:
2020-05-12_021501.tar.gz
4) 在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除
vim mysqldump_demo.sh
#!/bin/bash
#完成数据库定时备份
#备份路径
BACKUP=/export/data/db
#当前时间作为文件名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以通过输出变量来调试
#echo $DATETIME
#使用变量的时候,可以用花括号{}把变量名包起来,如下:
#echo ${DATETIME}
echo "---------------------开始备份数据库---------------------"
echo "---------------------备份的路径是$BACKUP/$DATETIME.tar.gz---------------------"
#主机ip地址
HOST=192.168.88.161
#数据库用户名
DB_USER=root
#数据库密码
DB_PWD=123456
#数据库名
DATABASE=itcast_shop
#创建备份路径
#如果备份路径存在,直接使用,否则创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#注:&&表示条件判断,前边成立,后边执行,前边不成立,后边不执行
#执行mysql的备份数据库指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} ${DATABASE} > ${BACKUP}/${DATETIME}/${DATETIME}.sql
#打包备份文件
cd ${BACKUP}
tar -czvf ${DATETIME}.tar.gz ${DATETIME}
#删除临时目录
rm -rf ${BACKUP}/${DATETIME}
#删除10天前的备份文件
find ${BACKUP} -mtime +10 -name "*.tar.gz" -exec rm -rf {} ;
echo "-------------------------备份成功-------------------------"
命令解析:
rpm -e --nodeps 删除某个软件包,并且忽略软件包的依赖关系
mysqldump -u[用户名] -h[ip] -p[密码] -P[端口号] 数据库名 表名 >导出的文件名.sql
语句find ${BACKUP} -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; 解释:
1)find命令只是来查找匹配的文件,如果查到文件之后还需要进一步的操作,则需要添加-exec参数,{}表示find查询出来的文件名字。
2)-exec 参数后面跟的是要执行的command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
3)-mtime 文件状态修改时间 ,-mtime +10:表示10天前的文件
三、定时执行
3.1Linux的定时工具crontab
注意:“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值,且只能出现一个
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
分(0~59)
时(0~23)
日(0~31,但是你需要考虑你月的天数)
月(1~12)
周(0~6 0=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
3.2 实现步骤
命令行输入crontab -e 进入编辑模式
编辑,写入以下内容
15 1 * * * /export/data/shell/mysqldump_demo.sh |
wq保存退出即可
配置定时任务调度成功!这样的话,每天的凌晨1:15就会自动的备份数据库