在我继续之前,请告诉我,我尝试了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 tab运行时没有任何工作。但是,当我通过服务器上的命令行界面运行它时,一切正常。
我的服务器已经在路径上安装了AWS(使用ROOT用户): / usr / bin / aws (使用 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日志中):
环境:/var/www/html/james/crons/s3_downloader.sh:权限被拒绝
答案 0 :(得分:1)
您的crontab条目错误。您已将shell脚本的名称(/var/www/html/james/crons/s3_downloader.sh
)作为参数传递给/usr/bin/aws
。
您应该直接从crontab条目中调用aws s3 sync
,或者调用您的shell脚本(并调用shell脚本aws s3 sync
),但您要尝试同时执行这两项操作。< / p>
因此,更改crontab条目以执行shell脚本(并确保shell脚本实际上是可执行的)。
00 5 * * * /var/www/html/james/crons/s3_downloader.sh