Linux 脚本手动工作,但不通过crontab

Linux 脚本手动工作,但不通过crontab,linux,bash,shell,cron,Linux,Bash,Shell,Cron,我不熟悉Shell脚本,正在编写一个脚本,该脚本将从我的Digital ocean bucket(空格)中删除旧项目 脚本在手动运行时工作,但在使用crontab时出错 我也看到过其他类似的问题,但没有帮助 脚本: #!/bin/bash /usr/local/bin/s3cmd -c ~/Bucket_Name ls s3://$1 | while read -r line; do createDate=`echo $line|awk {'print $1" "$2'}`

我不熟悉Shell脚本,正在编写一个脚本,该脚本将从我的Digital ocean bucket(空格)中删除旧项目

脚本在手动运行时工作,但在使用crontab时出错 我也看到过其他类似的问题,但没有帮助

脚本:

#!/bin/bash

/usr/local/bin/s3cmd -c ~/Bucket_Name ls s3://$1 | while read -r line;
  do
    createDate=`echo $line|awk {'print $1" "$2'}`
    createDate=`date -d"$createDate" +%s`
    olderThan=`date -d"-$2" +%s`
    #echo $line
    #echo $createDate
    #echo $olderThan
    #echo $1
    #echo $2
    if [[ $createDate -lt $olderThan ]]
      then
        fileName=`echo $line|awk {'print $4'}`
        #echo $fileName
        if [[ $fileName != "" ]]
          then
            #printf 'FILE' $fileName
            if [[ $fileName == *"sql" ]]
              then
                /usr/local/bin/s3cmd -c ~/Bucket_Name rm "$fileName"
            fi
        fi
    fi
  done;
手动命令(工作):

./sqlclear.sh "Bucket_Name" "300 minutes"
* * * * * sh /sqldump/sqlclear.sh "Bucket_Name" "300 minutes" >> /var/log/sql-clear.log 2>&1
/sqldump/sqlclear.sh: 13: /sqldump/sqlclear.sh: [[: not found
Crontab命令:

./sqlclear.sh "Bucket_Name" "300 minutes"
* * * * * sh /sqldump/sqlclear.sh "Bucket_Name" "300 minutes" >> /var/log/sql-clear.log 2>&1
/sqldump/sqlclear.sh: 13: /sqldump/sqlclear.sh: [[: not found
错误Cron日志(上面的sql-clear.Log):

./sqlclear.sh "Bucket_Name" "300 minutes"
* * * * * sh /sqldump/sqlclear.sh "Bucket_Name" "300 minutes" >> /var/log/sql-clear.log 2>&1
/sqldump/sqlclear.sh: 13: /sqldump/sqlclear.sh: [[: not found

在crontab中运行时,我错过了Bash 所以 crontab应该是

* * * * * bash /sqldump/sqlclear.sh

在crontab中运行时,我错过了Bash 所以 crontab应该是

* * * * * bash /sqldump/sqlclear.sh

在cron中使用
bash
而不是
sh
。i、 e
sh/sqldump/sqlclear.sh
bash/sqldump/sqlclear.sh
您已经在cron中使用了
sh
,并且您有一个用于
bash
~/Bucket\u Name
的shebang-这可能是您的问题。Crontab以SU而不是用户的身份运行脚本。尝试提供脚本中所有文件的完整路径。@AlexM Cron以您运行它的身份运行…@123是的,这是问题所在在Cron中使用
bash
而不是
sh
。i、 e
sh/sqldump/sqlclear.sh
bash/sqldump/sqlclear.sh
您已经在cron中使用了
sh
,并且您有一个用于
bash
~/Bucket\u Name
的shebang-这可能是您的问题。Crontab以SU而不是用户的身份运行脚本。请尝试提供脚本中所有文件的完整路径。@AlexM Cron以任何人的身份运行它…@123是的,这就是问题所在。您可以完全跳过
bash
,这是不必要的
/sqldump/sqlclear.sh
就足够了。您可以完全跳过
bash
,这是不必要的<代码>/sqldump/sqlclear.sh就足够了。