Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 不断获取错误:“quot;日期--日期=4天前:未找到命令";_Linux_Bash_Date - Fatal编程技术网

Linux 不断获取错误:“quot;日期--日期=4天前:未找到命令";

Linux 不断获取错误:“quot;日期--日期=4天前:未找到命令";,linux,bash,date,Linux,Bash,Date,我在专用服务器上设置了一个脚本,将所有Cpanel备份文件备份到amazons3,并且每天晚上都通过cron运行它 它昨晚运行得很好,备份了所有内容,但随后又删除了所有备份的内容。它似乎与date命令有关,因为如果我将脚本的“删除”部分拉出来并将其放入另一个文件中,并将其作为回显运行,则无法正确回显日期。我不断收到“未找到命令”错误: 以下是备份脚本的完整代码: #!/bin/bash ##Notification email address _EMAIL=klawncare1212@gmai

我在专用服务器上设置了一个脚本,将所有Cpanel备份文件备份到amazons3,并且每天晚上都通过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服务器上运行此小测试脚本时,都会出现以下错误:

“日期--日期=4天前:未找到命令”

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


我做错了什么?

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

当您说通过SSH运行它时,您键入的确切命令是什么?如果您尝试$“date--date=4天前”+%F(注意,我在这里加了引号),那么这个错误看起来就像您会得到的一样。好吧,为了运行我已经尝试过的脚本sh/path/to/script/script_name.sh和bash/path/to/script/script_name.sh——无论哪种方式都是相同的错误。在命令提示符下运行命令本身,我准确地键入:date--date=“4天前”+%F--并在看到引号的地方加上引号,然后按enter键并获得正确的响应。您的测试脚本通过ssh连接到CentOS服务器,对我来说很好。顺便说一下,切普纳问你使用的确切命令,你没有准确回答。丹尼斯,这个脚本放在哪个目录下重要吗?现在,它实际上位于服务器的根文件夹(/root/script\u name.sh)中。另外,您键入了什么命令来运行脚本?你用的是bash还是sh?最后,我不确定切普纳的问题是什么,我没有回答。我输入了我正在运行的确切命令,该命令给出了正确的返回日期。也许你的意思是运行脚本?如果是这样的话,那么我就输入:sh/root/script\u name.sh或bash/root/script\u name.sh——这两个都给出了我上面列出的错误。我不确定这是什么意思。我只是假设“date”命令只是内置在“linux基础结构”中,而不是有链接路径的东西。我怎么知道该使用哪条路径呢?结果是“路径”才是问题所在。我需要在脚本中使用/bin/date,而不仅仅是date。一旦我弄明白该走哪条路,我就很有魅力了。谢谢。请解释一下你的答案,否则我们不得不投反对票。
mydate4=`date -d "4 days ago " +%F`