Elastic Beanstalk 上的 Cronjob 未运行
Posted
技术标签:
【中文标题】Elastic Beanstalk 上的 Cronjob 未运行【英文标题】:Cronjob on Elastic Beanstalk not running 【发布时间】:2015-06-18 14:17:46 【问题描述】:我在一个弹性 beanstalk 应用上有一个爬虫,我可以像这样通过 SSH 运行它:
source /opt/python/run/venv/bin/activate
source /opt/python/current/env
cd /opt/python/current/app
scrapy crawl spidername
我想设置一个 cronjob 来为我运行它。所以我遵循了here的建议。
我的setup.config
文件如下所示:
container_commands:
01_cron_hemnet:
command: "cat .ebextensions/spider_cron.txt > /etc/cron.d/crawl_spidername && chmod 644 /etc/cron.d/crawl_spidername"
leader_only: true
我的spider_cron.txt
文件如下所示:
# The newline at the end of this file is extremely important. Cron won't run without it.
* * * * * root sh /opt/python/current/app/runcrawler.sh &>/tmp/mycommand.log
# There is a newline here.
我的runcrawler.sh
文件位于/opt/python/current/app/runcrawler.sh
,看起来像这样
#!/bin/bash
cd /opt/python/current/app/
PATH=$PATH:/usr/local/bin
export PATH
scrapy crawl spidername
我可以导航到/etc/cron.d/
并看到crawl_spidername
存在于那里。但是当我运行 crontab -l
或 crontab -u root -l
时,它说不存在 crontab。
我没有收到日志错误,没有部署错误,并且我尝试将 cron 输出到的 /tmp/mycommand.log
文件从未创建。似乎 cronjob 从未启动。
想法?
【问题讨论】:
您确定您的代码没有错误? 日志中没有错误,没有部署错误,并且我可以通过 SSH 运行“scrapy crawl spidername”而不会出错。只是 cronjob 没有运行,或者它可能运行但命令没有做任何事情(?)。写 * * * * * 用户名路径命令是否正确,我这样做的方式? 【参考方案1】:您的 spider_cron.txt 在 /opt/python/current/app/ 之后但在 scrapy 之前有一个额外的空间。所以正在运行的命令只是一个文件夹“/opt/python/current/app/”
你的
40 9 * * * root /opt/python/current/app/ scrapy crawl spidername > /dev/null
应该是
40 9 * * * root /opt/python/current/app/scrapy crawl spidername > /dev/null
准确输入“/opt/python/current/app/scrapy crawl spidername”会启动您的爬虫吗?
【讨论】:
不,Scrapy 不是 /app/ 中的文件。这是一个已安装的命令。您的解决方案不起作用,也不正确。我刚刚用我所做的一些更改更新了我的问题,但仍然无法正常工作。 现在您已经编辑了看起来接近工作的问题。如果您登录并且不更改目录。你能通过输入“/opt/python/current/app/runcrawler.sh”来运行你的脚本吗 如果我执行sudo crontab crawl_spidername
并将其添加到根 crontab 中,它会起作用。如果我这样做,一切都会很好。但似乎当我只是将文件放在/etc/cron.d/
中时,它不足以让 cron 实际加载和运行。所以这意味着每次我重新启动服务器或类似的东西时,我都必须进入实例并添加 cronjob。
这是另一个 *** 线程,它处理通过脚本向 cron 添加项目。 ***.com/questions/4880290/… 特别是我会看看 Joe Casadonte ***.com/a/9625233/4179009 的帖子以上是关于Elastic Beanstalk 上的 Cronjob 未运行的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk CRON 作业设置
Aws Elastic Beanstalk 不执行 cron.yaml 文件
AWS Elastic Beanstalk 中的 Cron 来触发 js 文件