当用cron运行时脚本不会做它应该做的

我有一些问题。 我有脚本执行计划,但时间到了什么都没有发生。

#!/bin/sh TIME=`date +"%d-%m-%Y"` cd /var/www/flyer/data/www/ mysqldump -u root -ppasswd --databases db_name --create-options --default- character-set=utf8 --result-file=dump.sql FILENAME="backup_$TIME.tar.gz" tar -cpzf ../backups/$FILENAME somefolder dump.sql rm dump.sql chown flyer:flyer ../backups/$FILENAME chmod 666 ../backups/$FILENAME 

当我直接从ssh运行脚本为/root/backup.sh时,一切正常。 但是当它由cron运行时,什么都不会发生。 grep CRON /var/log/syslog显示它被执行(Dec 19 01:21:01 vps-8463 / USR / SBIN / CRON [1299] 🙁 root)CMD(sh /root/backup.sh> / dev / null 2>&1))但是没有存档被创build。 Cron任务: 21 1 * * * sh /root/backup.sh >/dev/null 2>&1
任何想法为什么发生这种情况?

我的第一个猜测是mysqldump命令不在脚本由cron运行的path中。 尝试:

which mysqldump

取出该输出,并将整个pathreplace为命令名称。 例如: /usr/bin/mysqldump而不是mysqldump

或者添加一些东西到本地的PATHvariables。 例如: PATH=$PATH:/usr/bin

如果tarchown或其他命令不在默认path中,这也将解决问题。