AWS无法在Cronjob工作

AnP*_*ile 28 shell cron amazon-s3

所以我每天都有一个脚本从AWS下载文件并将其附加到电子表格中.要做到这一点,我已经建立了一个cronjob.

我手动运行时脚本工作正常,但从cronjob运行时不起作用.

代码有一行:

aws s3 cp s3://My/files/backup/ ~/home/AnPoc/ --recursive --exclude "*.tgz" --include "*results.tgz"
Run Code Online (Sandbox Code Playgroud)

在我收到的cronjob执行的电子邮件中,我看到以下错误消息:

./AnPoc/DayProcessing.sh: line 14: aws: command not found
Run Code Online (Sandbox Code Playgroud)

我不知道为什么命令没有找到.任何帮助都会很棒.

cha*_*aos 42

第一步:检查系统aws中存储可执行文件的位置.使用此命令:

$ which aws
/usr/bin/aws # example output, can differ in your system
Run Code Online (Sandbox Code Playgroud)

现在,$PATH在脚本之前放置一个在crontab中调用的变量:

PATH=/usr/bin:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

那些路径由:define 分隔,应该搜索exectable.在上面的例子中,它是/usr/bin.您必须检查cron作业中可用的所有可执行文件.

另一件事:尝试避免~在cronjobs中使用波浪号()的路径.请/home/user改用.

  • 如果你'echo $ PATH`,你会看到你的会话加载了变量.但是,当您从crontab执行时它不会. (4认同)

lib*_*eek 27

您应该使用"aws"命令的完整路径.例如,/ usr/local/bin/aws


小智 8

将此代码放在要在 crontab -e 中执行的命令行之前

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)