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 -lcrontab -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 未运行的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk cron 和部署权限

AWS Elastic Beanstalk CRON 作业设置

Aws Elastic Beanstalk 不执行 cron.yaml 文件

AWS Elastic Beanstalk 中的 Cron 来触发 js 文件

在 Elastic Beanstalk 中运行 cron 作业

Elastic Beanstalk 未调度 cron.yaml 中定义的作业