首页 文章

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

提问于
浏览
1

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

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

这是备份脚本的完整代码:

#!/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天前:找不到命令”

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

我究竟做错了什么?

2 回答

  • 3

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

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

相关问题