Scron履带在Cron工作

bek*_*eka 17 ubuntu cron crontab scrapy cron-task

我想从cron job执行我的scrapy crawler.

我创建了bash文件getdata.sh,其中scrapy项目位于它的蜘蛛上

#!/bin/bash
cd /myfolder/crawlers/
scrapy crawl my_spider_name
Run Code Online (Sandbox Code Playgroud)

我的crontab看起来像这样,我想每5分钟执行一次

 */5 * * * * sh /myfolder/crawlers/getdata.sh 
Run Code Online (Sandbox Code Playgroud)

但它不起作用,什么是错的,我的错误在哪里?

当我从终端sh /myfolder/crawlers/getdata.sh执行我的bash文件时,它工作正常

bek*_*eka 24

我解决了这个问题,包括PATH到bash文件

#!/bin/bash

cd /myfolder/crawlers/
PATH=$PATH:/usr/local/bin
export PATH
scrapy crawl my_spider_name
Run Code Online (Sandbox Code Playgroud)

  • 我猜PATH不应总是设置为/ usr / local / bin,这取决于您所使用的环境和服务器,对吗?那么,PATH应该设置为什么?....的文件夹 (3认同)

NFe*_*ern 8

添加以下行在crontab -e每天早上5点运行我的scrapy爬行.这是crocs答案的略微修改版本

PATH=/usr/bin
* 5 * * * cd project_folder/project_name/ && scrapy crawl spider_name
Run Code Online (Sandbox Code Playgroud)

没有设置$PATH,cron会给我一个错误"命令未找到:scrapy".我想这是因为/ usr/bin是运行程序的脚本存储在Ubuntu中的地方.

请注意,我的scrapy项目的完整路径是/home/user/project_folder/project_name.我在cron中运行了env命令并注意到工作目录是/home/user.因此我跳过/home/user上面的crontab

调试时,cron日志可能会有所帮助

grep CRON /var/log/syslog
Run Code Online (Sandbox Code Playgroud)


not*_*mey 6

pip3对于使用(或类似)安装的任何人scrapy,这里有一个简单的内联解决方案:

*/10 * * * * cd ~/project/path && ~/.local/bin/scrapy crawl something >> ~/crawl.log 2>&1
Run Code Online (Sandbox Code Playgroud)

代替:

*/10 * * * *用你的 cron 模式

~/project/path以及你的 scrapy 项目的路径(你scrapy.cfg所在的位置)

something与蜘蛛名称(scrapy list在您的项目中使用以找出)

~/crawl.log与您的日志文件位置(如果您想进行日志记录)