Linux 定时任务基本知识
crontab
shell
yum install crontabs (安装 crontabs)
systemctl enable crond (设为开机启动)
systemctl start crond(启动crond服务)
systemctl status crond (查看状态)
systemctl restart crond (重启服务)
语法:
shell
crontab [选项]
选项说明:
-e :编辑定时任务
-l :查询 任务
-r :删除当前用户所有的任务
新增一个定时任务
1、进入编辑页面
shell
crontab -e
2、编写任务
shell
语法:
* * * * * 执行的任务
# 第一个 * 一小时的第几分钟,范围 0-59
# 第二个 * 一天中的第几个小时,范围0-23
# 第三个 * 一月中的第几天,范围 1-31
# 第四个 * 一年中的第几月,范围 1-12
# 第五个 * 一周当中的星期几,范围 0-7 0和7都代表周日
特殊符号
* 代表任何时间
, 代表不连续的时间,比如 0 8,12,16 * * * 代表每天 8点 12点 16点 都执行一次命令
- 代表连续的时间,比如 0 5 * * 1-6 代表,每周一到周六的凌晨5点执行命令
*/n 代表每个多久执行一次,比如 */10 * * * * 代表每个10分钟执行一次
MySQL 备份知识
sql
# 导出
# mysqldump -h 主机 -u用户名 -p密码 数据库1 数据库2> E:/文件名
# 如果不写表名,默认备份该数据库中的全部表
mysqldump -h localhost -u root -p schooldb test >E:/a.sql
mysqldump -h localhost -uroot -padmin shop > D:/a.sql
备份脚本
在 home/mydata/db_back 创建一个脚本 db-back.sh
shell
#!/bin/bash
echo '开始备份数据'
# 定义 MySQL docker容器名称和备份目录
MYSQL_CONTAINER="mysql"
BACKUP_DIR="/home/mydata/db_back"
# 定义 MySQL 容器中的数据库用户名、密码和备份文件名
MYSQL_USER="root"
MYSQL_PASSWORD="admin"
BACKUP_FILE="${BACKUP_DIR}/earn-$(date +%Y%m%d%H%M%S).sql"
# 执行备份命令
docker exec ${MYSQL_CONTAINER} mysqldump --default-character-set=utf8mb4 --single-transaction -u ${MYSQL_USER} -p${MYSQL_PASSWORD} earn > ${BACKUP_FILE}
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "MySQL 数据库备份成功:${BACKUP_FILE}"
else
echo "MySQL 数据库备份失败"
fi
# 删除14天前的备份文件
find ${BACKUP_DIR} -type f -name "*.sql" -mtime +14 -delete
echo '完成备份'
定时任务
shell
# 创建定时任务
crontab -e
# 每天凌晨一点开始执行 /home/mydata/db_back/db-back.sh 脚本,并将输出追加到 /home/mydata/db_back/db_back.log 文件中
0 1 * * * sh /home/mydata/db_back/db-back.sh >> /home/mydata/db_back/db_back.log 2>&1