【问题标题】:AWS commands not getting executed on CRONTABAWS 命令​​未在 CRONTAB 上执行
【发布时间】:2017-04-21 18:58:58
【问题描述】:

在继续之前,请告诉我,我尝试了 stackoverflow 和其他论坛中提到的所有方法,但在我的 CentOS 6.8 服务器上没有任何效果。

这是我在 crontab 中写的内容

00 5 * * * /usr/bin/aws /var/www/html/james/crons/s3_downloader.sh

而s3_downloader.sh文件的完整内容是:

#!/bin/bash
aws s3 sync "s3://my_bucket/my_folder/" "/var/www/html/james/downloads/my_folder/";

但是当 cron 选项卡运行它时,没有任何工作。但是,当我通过服务器上的命令行屏幕运行它时,一切正常。

我的服务器已将 AWS 安装在路径(使用 ROOT 用户):/usr/bin/aws(使用 which aws

这是我尝试过的方法(但对我没有任何效果):

-->更改了文件内容中aws的路径:

#!/usr/bin/aws
aws s3 sync "s3://my_bucket/my_folder/" "/var/www/html/james/downloads/my_folder/";

--> 是否在 ROOT 控制台上导出设置

export AWS_CONFIG_FILE="/root/.aws/config"
export AWS_ACCESS_KEY_ID=XXXX
export AWS_SECRET_ACCESS_KEY=YYYY

编辑: 当我将 crontab 的响应记录到日志中时

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
aws: error: argument command: Invalid choice, valid choices are:

这里是完整的回复:http://pastebin.com/XAKQUVzT

编辑 2

经过更多调试,我可以看到出现的错误(在 cron 日志中)是:

env:/var/www/html/james/crons/s3_downloader.sh:权限被拒绝

【问题讨论】:

  • /var/www/html/james/crons/s3_downloader.sh 和所有包含文件夹的权限是什么 (ls -ld)?

标签: amazon-web-services amazon-s3 crontab aws-cli


【解决方案1】:

您的 crontab 条目错误。您已将 shell 脚本的名称 (/var/www/html/james/crons/s3_downloader.sh) 作为参数传递给 /usr/bin/aws

您应该直接从 crontab 条目中调用 aws s3 sync,或者调用您的 shell 脚本(并使 shell 脚本调用 aws s3 sync),但您正在尝试同时执行这两种操作。

因此,更改 crontab 条目以执行 shell 脚本(并确保 shell 脚本实际上是可执行的)。

00 5 * * * /var/www/html/james/crons/s3_downloader.sh

【讨论】:

  • 即使我这样做了,日志中的错误也是一样的 - pastebin.com/XAKQUVzT
  • 您的 shell 脚本是以 #!/bin/bash 开头还是以 #!/usr/bin/aws 开头?使用前者。
猜你喜欢
  • 2018-09-16
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 2018-07-17
  • 2011-09-15
  • 1970-01-01
相关资源
最近更新 更多