我已经将我的配置文件简化为我能想到的最简单的例子,但是我仍然无法让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)我尝试过许多不同的方法,包括让运行的命令对我们的数据库进行更改,但它似乎从未真正执行过。
发布于 2022-06-04 22:09:49
最近我遇到了同样的问题(PHP ElasticBeanstalk,迁移到AL2),并找到了这个解决方案。
基本上,由于Amazon 2不再具有“/opt/弹性bean秸秆/support/envvars”,而且“/opt/弹性bean秸秆/部署/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/弹力豆茎/部署/env“。您的cron条目现在应该如下所示:
*/1 * * * * root . /etc/profile.d/sh.local && echo "TESTING" >> /var/log/test_log.log 2>&1...and你应该做得很好!:)
https://stackoverflow.com/questions/69766711
复制相似问题