手动可以执行脚本,但是crontab定时任务执行有生成文件但是没数据

手动可以执行脚本,但是crontab定时任务执行有生成文件但是没数据

原因:
1.mysqldump脚本所在的位置要写全路径,因为手动执行的时候是在bin目录下执行的所以没问题。但是定时任务执行的时候因为没有他默认是找crontab所在的目录去执行脚本。但是mysqldump不在这个里面所以会执行不成功。

手动可以执行脚本,但是crontab定时任务执行有生成文件但是没数据_第1张图片

改成这样就可以了

# 备份数据库
for DB_NAME in "${DB_NAMES[@]}"; do
    /home/mysql/mysql/bin/mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME > "$BACKUP_DIR/$DATE_DIR/backup_$DB_NAME.sql"
done

2.Linux时区或者时间和现实时间不一致
当我解决完第一个问题之后,我把定时任务改成了两分钟后执行,想要验证下有没有问题。结果发现到了时间之后还是没有按照我的预期生成对应的文件。
这个时候,我的第一步排查是脚本有问题,但是手动执行之后没问题,然后就怀疑cron表达式写错了仔细检查后没问题。
 
当我猛查资料的时候,发现脚本自己执行了。后面检查发现我的Linux时间,比我实际时间慢10分钟。所以才出现,我以为时间到了,其实并没有到时间,所以他执行不成功。

date 查看Linux当前时间

tail /var/log/cron  查看cron日志;

你可能感兴趣的:(linux,运维,服务器)