shell脚本不能在cron中工作

我有非常smiple脚本做一个备份,并且它运行正常,当我从命令行运行它,但我有问题运行它作为cron工作。

我的cron条目是这样的:(运行它每分钟testingatm)

* * * * * /var/hosting/ctest/ptest/backup-site.sh > /var/tmp/ctest_ptest_backup_cron2.log 

我可以在/ var / log / cron中看到它被执行

 Sep 22 11:06:01 devbox CROND[31506]: (gwesio) CMD (/var/hosting/ctest/ptest/backup-site.sh > /var/tmp/ctest_ptest_backup_cron2.log) 

但是它没有做它应该做的事情,因为备份存档没有被创build。 这是我如何设置文件的权限:

 -rwxr-xr-x 1 apache developers 877 2011-09-22 10:11 /var/hosting/ctest/ptest/backup-site.sh 

脚本本身就是这样的:

 #!/bin/sh PATH=/usr/bin:/bin TIME=$(date +%Y-%m-%d-%H:%M) PDIR="/var/hosting/ctest/ptest" BACKUP_DIR="$PDIR/backups" BACKUP_FOLDER="$BACKUP_DIR/$(date +%Y-%m-%d-%H%M)" RESOURCES_DIR="$PDIR/management/html/resources" sudo mkdir $BACKUP_FOLDER sudo chown apache:developers $BACKUP_FOLDER sudo chmod g+w $BACKUP_FOLDER FILENAME="ctest_ptest-$(date +%Y-%m-%d-%H%M).sql" PTH="$BACKUP_FOLDER/$FILENAME" ARCHIVE_FILENAME="$BACKUP_DIR/ctest_ptest-$(date +%Y-%m-%d-%H%M).tgz" echo "Database backup script execution" sudo /usr/bin/mysqldump -uuser -ppassword -hlocalhost --databases ctest_ptest > $PTH echo "Database dump in $PTH" echo "Resources backup" sudo /bin/tar czvfP $ARCHIVE_FILENAME $BACKUP_FOLDER $RESOURCES_DIR > /dev/null echo "Backup file: $ARCHIVE_FILENAME" echo "Cleanup" sudo /bin/rm -r $BACKUP_FOLDER exit 0 

我正在想出哪里可以find任何其他可能是错误的迹象。 我试图在其他post中使用绝对path,脚本可以在没有任何问题的情况下从shell脚本执行。

我试图debugging和注释rm -r行,并注意到$ BACKUP_FOLDER不是首先创build,但我不知道为什么。 我也尝试将crontab更改为su – user / var / hosting ….但它没有帮助。

也许这是我在这里错过的东西,还是有更好的方法呢? 有任何想法吗?

格雷格

我猜cron并没有被所有的sudo命令所使用。 删除sudo,并以cron的身份运行脚本,至less以具有必要的缺陷的用户身份运行所需的目录。