Cron 作业已触发 - 但预计 echo 没有任何效果

Cron 作业已触发 - 但预计 echo 没有任何效果

我有一个 shell 脚本来从 S3 下载文件。我可以手动运行该脚本,并且工作正常,但是当我从 Cron 安排它时,它会被触发,但除了命令之外echo,不会执行任何操作。

脚本

#!/usr/bin/env bash

set -e
echo "starting"
y_day=$(date --date="-1 day" +%d)
y_month=$(date --date="-1 day" +%m)
y_year=$(date --date="-1 day" +%Y)

files=$( aws s3 ls  s3://bucket/log/$y_year/$y_month/$y_day/ | grep _mylog_ | awk -F ' ' '{print $4}')

for file in $files
do
aws s3 cp s3://bucket/log/$y_year/$y_month/$y_day/$file /opt/local_log/
done

## Next files
count=$( aws s3 ls  s3://bucket/testlog/$y_year/$y_month/$y_day/ | grep _testlog_ | wc -l)

if [ $count -gt 0 ]
then
files=$( aws s3 ls  s3://bucket/testlog/$y_year/$y_month/$y_day/ | grep _testlog_ | awk -F ' ' '{print $4}')

for file in $files
do
aws s3 cp s3://bucket/testlog/$y_year/$y_month/$y_day/$file /opt/localtestlog/
done
else
echo "No files for userlog"
fi

定时任务

10 13 * * * /opt/script/copy.sh > /tmp/copy.log

日志文件(/tmp/copy.log)

starting
No files for userlog

s3://bucket/testlog/$y_year/$y_month/$y_day/此位置没有文件,因此日志正确。但我第一组命令,没有下载任何东西。

Ubuntu 系统日志

Jun  5 19:04:01 ip-10-23-53-161 CRON[6984]: (root) CMD (/opt/script/copy.sh > /tmp/copy.log
)
Jun  5 19:04:01 ip-10-23-53-161 cron[6952]: sendmail: fatal: open /etc/postfix/main.cf: No such file or directory
Jun  5 19:04:01 ip-10-23-53-161 postfix/sendmail[7012]: fatal: open /etc/postfix/main.cf: No such file or directory
Jun  5 19:04:01 ip-10-23-53-161 CRON[6979]: (root) MAIL (mailed 1490 bytes of output but got status 0x004b from MTA#012)

我没有邮件服务器,所以最后三行没问题。但我的问题是,完整的命令运行了,除了回显之外,没有任何东西处理他们的工作。但是这个count命令运行并且值为0,所以它确实回显了No files for userlog。

答案1

主要问题似乎是aws找不到该命令。

您可以通过以下两种方式之一解决此问题:

  1. 每次在脚本中调用该命令时,请使用该命令的完整路径。
  2. 修改PATH脚本以包含找到命令的目录的路径。

也可以看看:

相关内容