Linux定时任务crontab执行脚本无输出

写了一个备份数据库的脚本,手动调试时,OK。
写入crontab后,脚本失效。
异常原因:用户环境变量问题
看一下脚本调用的是mysqldump,MySQL是编译安装的:安装路径/usr/local/mysql。
因为在Linux下用crontab执行定时任务时不会从用户profile文件中读取环境变量参数,所以导致在手动执行某个脚本时是成功的,但是写入crontab中定期执行时会出错。
根本原因是某些命令无法使用crontab调用,因为用户登陆Linux操作系统的时候,”/etc/profile”, “~/.bash_profile”等配置文件会被自动执行,所以手动执行脚本能够成功,但是crontab执行失败。
解决方法有两种:
1、在脚本文件文件里面调用的命令写成绝对路径:

#!/bin/bash
date=$(date +%d-%m-%Y)
/usr/local/mysql/bin/mysqldump -u root -p'xxx' xxx > /data/sdv1/mysqlbak/$date-xxx.sql
echo `date +%Y-%m-%d` >> /data/sdv1/mysqlbak/$date.log
echo 'Backup Successfully Completed' >> /data/sdv1/mysqlbak/$date.log

2、脚本文件添加环境变量:

#!/bin/bash
. /etc/profile
. ~/.bash_profile
date=$(date +%d-%m-%Y)
mysqldump -u root -p'xxx' xxx > /data/sdv1/mysqlbak/$date-xxx.sql
echo `date +%Y-%m-%d` >> /data/sdv1/mysqlbak/$date.log
echo 'Backup Successfully Completed' >> /data/sdv1/mysqlbak/$date.log

这样,crontab在执行脚本的时候,就能正常执行。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹宇飞丶

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值