mysql备份和shell脚本手动执行没问题,crontab定时执行失败

备份脚本

vim mysql_backup.sh

#!/bin/bash

source /etc/profile
source ~/.bash_profile
 
# 保存的目录
data_dir="****"
# 保存文件的名字,注意date是用#倒引号#包起来的 
data_name="bak_`date +%Y%m%d%H`.sql"
 
if [ ! -d $data_dir ]; then
  mkdir -p $data_dir
fi
 
# mysqldump备份命令
# -uroot   用户名
# -p123456 密码
# test 数据库名称
mysqldump -uroot -p123456 test > $data_dir/$data_name
 

备份文件

vim remove_backup.sh

#/bin/bash

source /etc/profile
source ~/.bash_profile
# 保存的目录
data_dir="****" 

# 删除7天前的备份文件
find $data_dir -mtime +7 -type f -name "bak_*.sql" -exec rm -rf {};

解释:

$data_dir                   --设置查找的目录;

-mtime +7                  --设置时间为7天前;
-type f                        --设置查找的类型为文件;
-name "bak_*.sql"     --设置文件名称中包含sql;

-exec:固定写法

rm -rf:强制删除文件,包括目录

{} ; :固定写法,一对大括号+空格+

atime、ctime、mtime

atime:访问时间(access time),指的是最后一次访问文件或目录的时间;
ctime:变更时间(change time),指的是最后一次改变文件或目录 ( 改变的是原数据即 : 属性 ) 的时间 ;
mtime:修改时间(modify time),指的是最后一次修改文件或目录的时间;
使用stat命令可以查看三时间值:如 stat filename

find以时间为条件查找

mtime参数如下:
-mtime n 按照⽂件的更改时间来找⽂件,n为整数。
n 表⽰⽂件更改时间距离为n天
-n 表⽰⽂件更改时间距离在n天以内
+n 表⽰⽂件更改时间距离在n天以前
 

例如:
-mtime 0 表⽰⽂件修改时间距离当前为0天的⽂件,即距离当前时间不到1天(24⼩时)以内的⽂件。
-mtime 1 表⽰⽂件修改时间距离当前为1天的⽂件,即距离当前时间1天(24⼩时-48⼩时)的⽂件。
-mtime+1 表⽰⽂件修改时间为⼤于1天的⽂件,即距离当前时间2天(48⼩时)之外的⽂件
-mtime -1 表⽰⽂件修改时间为⼩于1天的⽂件,即距离当前时间1天(24⼩时)之内的⽂件
 

赋权限

chmod   755 ***.sh

定时任务

crontab -e


0 */2 * * * root  mysql_backup.sh #每2小时

0 1 * * * root remove_backup.sh # 每天凌晨1点,自动删除7天前的备份

shell脚本手动执行没问题,crontab定时执行失败

问题描述:

   Shell脚本手动执行可以正常运行,并得到正确结果;使用Crontab定时调度的时候,Shell脚本执行出来的结果数据量为0。

原因:

     Linux下用crontab执行定时任务不会缺省的从用户profile文件中读取环境变量参数,所以经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。这是因为用户登陆Linux操作系统的时候,”/etc/profile”, “~/.bash_profile”等配置文件会被自动执行,而crontab定时调度的时候可能不会执行配置文件。
 

解决方案:

Shell脚本缺省的 #!/bin/sh 开头换行后的第一行添加

source /etc/profile
source ~/.bash_profile

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值