繁体   English   中英

Elastic Beanstalk Linux 2 Cron 作业正在运行但未执行

[英]Elastic Beanstalk Linux 2 Cron Job running but not executing

我已将我的配置文件简化为我能想到的最简单的示例,但我仍然无法让 cron 执行。 这是一个 django 项目,虽然看起来 crons 正在尝试运行,但它们实际上并没有执行。

.ebextensions/cron-log.config    
  "/etc/cron.d/test_cron":
    mode: "000644"
    owner: root
    group: root
    content: |
        */1 * * * * root . /opt/elasticbeanstalk/deployment/env && echo "TESTING" >> /var/log/test_log.log 2>&1

commands:
  rm_old_cron:
    command: "rm -fr /etc/cron.d/*.bak"
    ignoreErrors: true

从 aws 下载日志时,test_log.log 不存在

在日志中返回的 cron 文件中,它显示:

Oct 29 09:03:01 ip-172-31-8-91 CROND[10212]: (root) CMD (. /opt/elasticbeanstalk/deployment/env && echo "TESTING" >> /var/log/test_log.log 2>&1)

我已经尝试了很多变体,包括让运行的命令在我们的数据库中进行更改,但它似乎从未真正执行过。

我最近遇到了同样的问题(PHP ElasticBeanstalk,迁移到 AL2),并找到了这个解决方案

基本上,由于 Amazon Linux 2 不再具有“/opt/elasticbeanstalk/support/envvars”,并且“/opt/elasticbeanstalk/deployment/env”需要 sudo 才能访问,因此您需要为您的 cron 有效地创建自己的环境变量文件可以参考的职位。 创建一个新的 .ebextensions 配置脚本,其中包含以下内容:

commands:
    setvars:
        command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' > /etc/profile.d/sh.local

然后,引用“/etc/profile.d/sh.local”文件而不是“/opt/elasticbeanstalk/deployment/env”。 您的 cron 条目现在应该如下所示:

*/1 * * * * root . /etc/profile.d/sh.local && echo "TESTING" >> /var/log/test_log.log 2>&1

...你应该很高兴去! :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM