继续收到错误:“date --date = 4天前:找不到命令”

时间:2012-05-11 17:44:43

标签: linux bash date

我在我的专用服务器上设置了一个脚本,将我的所有Cpanel备份文件备份到Amazon S3,并且我每晚都通过cron运行它。

它昨晚完美运行并支持所有内容,但后来继续删除它备份的所有内容。它似乎与date命令有关,因为如果我将脚本的“删除”部分拉出来并将其放入另一个文件并将其作为回显运行,我无法获得回显的日期正常。我一直收到“命令未找到”错误:

以下是备份脚本的完整代码:

#!/bin/bash

##Notification email address
_EMAIL=klawncare1212@gmail.com

ERRORLOG=/var/log/s3_backup_logs/backup.err`date +%F`
ACTIVITYLOG=/var/log/s3_backup_logs/activity.log`date +%F`

##Directory which needs to be backed up
SOURCE=/backup/cpbackup/daily

##Name of the backup in bucket
DESTINATION=`date +%F`

##Backup degree
DEGREE=4

#Clear the logs if the script is executed second time
:> ${ERRORLOG}
:> ${ACTIVITYLOG}

##Uploading the daily backup to Amazon s3
/usr/bin/s3cmd -r put ${SOURCE} s3://MK_Web_Server_Backup/${DESTINATION}/ 1>>${ACTIVITYLOG} 2>>${ERRORLOG}
ret2=$?

##Sent email alert
msg="BACKUP NOTIFICATION ALERT FROM `hostname`"

if [ $ret2 -eq 0 ];then
msg1="Amazon s3 DAILY Backup Uploaded Successfully"
else
msg1="Amazon s3 DAILY Backup Failed!!\n Check ${ERRORLOG} for more details"
fi
echo -e "$msg1"|mail -s "$msg" ${_EMAIL}

#######################
##Deleting backup's older than DEGREE days
## Delete from both server and amazon
#######################
DELETENAME=$(date --date="${DEGREE} days ago" +%F)

/usr/bin/s3cmd -r --force del s3://MK_Web_Server_Backup/${DELETENAME} 1>>${ACTIVITYLOG} 2>>${ERRORLOG}

以下是我正在测试的示例代码,它只是回显上面的日期代码:

#!/bin/bash

##Backup degree
DEGREE=4

#######################
##Deleting backup's older than DEGREE days
## Delete from both server and amazon
#######################
DELETENAME=$(date --date="4 days ago" +%F)

echo ${DELETENAME}

我做错了什么?每次我通过SSH在CentOS Linux服务器上运行这个小测试脚本时,都会出现以下错误:

“date --date = 4天前:找不到命令”

因此,插入“度”变量值没有任何问题。而且,如果我只是在SSH(date --date="4 days ago" +%F)的提示符下运行相同的命令,它就像一个魅力,输出数据就像我期望的那样。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

当您从常规终端运行脚本时,您可能正在使用不同版本的date命令,而不是从脚本运行脚本,因为它们使用不同的路径。使用要使用的日期命令版本的完整路径,或者在脚本开头显式设置路径。

答案 1 :(得分:0)

mydate4=`date -d "4 days ago " +%F`