AWS 无法通过 Cronjob 工作
Posted
技术标签:
【中文标题】AWS 无法通过 Cronjob 工作【英文标题】:AWS not working working from Cronjob 【发布时间】:2014-12-16 07:59:54 【问题描述】:所以我有一个脚本可以每天从 AWS 下载文件并将其附加到电子表格中。为此,我设置了一个 cronjob。
脚本在我手动运行时运行良好,但在从 cronjob 运行时无法运行。
代码有一行:
aws s3 cp s3://My/files/backup/ ~/home/AnPoc/ --recursive --exclude "*.tgz" --include "*results.tgz"
在我从 cronjob 执行收到的电子邮件中,我看到以下错误消息:
./AnPoc/DayProcessing.sh: line 14: aws: command not found
我不知道为什么找不到该命令。任何帮助都会很棒。
【问题讨论】:
这该死的 $hi7 应该由 AWS 在有关为 s3 cli 创建 cron 的部分中记录。 【参考方案1】:首先:检查可执行文件aws
在系统上的存储位置。使用这个命令:
$ which aws
/usr/bin/aws # example output, can differ in your system
现在,在脚本之前的 crontab 中放置一个名为 $PATH
的变量:
PATH=/usr/bin:/usr/local/bin
那些由:
分隔的路径定义了应该在哪里搜索可执行文件。在上面的示例中,它是/usr/bin
。您必须检查 cron 作业中的所有可执行文件是否可用。
另一件事:尽量避免在 cronjobs 中使用波浪号 (~
) 的路径。请改用/home/user
。
【讨论】:
如果你echo $PATH
你会看到你的会话已经加载了变量。但是,当您从 crontab 执行时,它不会。
保存了我的 ar$e... 必须创建我的邮件服务器的备份并将其移动到 s3 存储桶。当我手动运行我的脚本(使用 aws s3 cp ...)时,它可以正常工作,只需添加 PATH
即可使其与 cron 一起使用。我发誓,如果不是因为你的帖子,再过一年我自己也想不通。
@Ev.感谢您的评论,我什至在回答之前就注意到了。它使我通过将路径的输出重定向到文件来进行简单的测试,其余的在上面的答案中进行了解释。
如果你不知道该把 crontab 放在哪里,请看***.com/a/2409369/1386952【参考方案2】:
您应该使用aws
命令的完整路径。例如/usr/local/bin/aws
【讨论】:
@ user5735796 - 当脚本通过 cron 运行时,它会在 $PATH 变量中配置的预定义位置搜索 aws 可执行文件。如果这些位置未安装 aws,则找不到该命令。因此,要么使用完整路径来执行可执行文件,要么将您的 aws 位置添加到 $PATH 变量。【参考方案3】:将此代码放在要执行的命令行之前 crontab -e
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
【讨论】:
感谢您的回答。解决 EKS 命令(例如kubectl get po
)的类似问题对我很有帮助【参考方案4】:
唯一对我有用的是在脚本中明确指定路径:
ROOTDIR=/home/myusername
LOGDIR=$ROOTDIR/logs
DUMPDIR=$ROOTDIR/db_backup
LOGFILE=$LOGDIR/db_backup.log
$ROOTDIR/.local/bin/aws s3 cp $DUMPDIR/myappname-`date +"%Y-%m-%d"` s3://my-bucket-name/backups/myappname-`date +"%Y-%m-%d"` --recursive >> $LOGFILE 2>&1
正如之前发帖人所说,使用which aws
来查找aws的位置。
【讨论】:
【参考方案5】:如果您的个人资料中有 aws,您还可以通过添加 . $HOME/.profile
来包含您的个人资料
* * * * * . $HOME/.profile; /path/to/command
【讨论】:
以上是关于AWS 无法通过 Cronjob 工作的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 AWS Session Manager 工作获得 SSH 连接
aws elasticbeanstalk:无法通过 eb cli 部署到工作环境
在 AWS 上设置 cronjob 最经济的方法是啥? [关闭]