centos定时备份数据库任务crontab
crontab 使用
1、安装 crontab
一般 CentOS 会默认安装了 crontab,执行下面命令,查看是否安装:
rpm -qa | grep crontab
如果查询结果类似于下面,说明已安装:
crontabs-1.11-6.20121102git.el7.noarch
如果结果为空,说明没有安装,执行下面命令进行安装即可:
yum install -y crontabs
2、crontab 常用命令
查看 crontab 运行状态:
systemctl status crond
如果显示结果为 Active: active (running) 则表示运行中,Active: inactive (dead) 表示未运行。
如果 crontab 未运行,可以通过下面命令设置开机自启和启动。
设置 crontab 开机自启:
systemctl enable crond
启动 crontab:
systemctl start crond
查看当前用户的定时任务:
crontab -l
3、设置定时任务
这里我们以一个「每日定时备份mysql数据库」任务为例,说明设置定时任务的步骤。
首先,创建一个脚本 test.sh:
vim /root/test.sh
按 i 进入编辑状态,粘贴下面内容:
#!/bin/bash
TIMESTAMP=`date +%Y%m%d%H%M%S`
BACKUP_DIR="备份存储路径"
DB_USER="root"
DB_PASS="xxxxxxxxxxxx"
# 使用 mysqldump 命令备份数据库
mysqldump -u $DB_USER -p$DB_PASS 数据库名 > $BACKUP_DIR/mysql_数据库名_$TIMESTAMP.sql
按 Esc 键,再输入 :wq 保存文件。
执行下面命令即可编辑当前用户的定时任务:
crontab -e
假如我想在每天 19:00 的时候执行该定时任务,则按下 i 进入编辑状态,粘贴下面内容:
0 19 * * * sh /root/test.sh
按 Esc 键,再输入 :wq 保存,当然你也可以修改为临近的时间,测试是否生效。
通过 crontab -l 可查看到已保存的定时任务:
0 19 * * * sh /root/test.sh
定时任务参数说明:
# .---------------- 分钟,取值范围为 0-59
# | .------------- 小时,取值范围为 0-23
# | | .---------- 日,取值范围为 1-31
# | | | .------- 月,取值范围为 1-12
# | | | | .---- 星期,取值范围为 0-7,0 和 7 都表示星期日
# | | | | | .-- 要执行的命令
# | | | | | |
0 19 * * * sh /root/test.sh
到达指定时间之后,查看【备份存储路径】目录下是否已经有了备份后的sql文件,如果有说明定时任务执行成功;如果没有,则说明 crontab 没有执行。
4、crontab 不执行的原因
- 检查
crontab服务是否正常 - 检查脚本路径是否绝对路径
- 检查脚本命令是否正确