我想设置一个cron作业,以运行我的scrapy (python脚本)
我就是这样运行脚本的,它运行得很好:
ubuntu@ip-1-2-3-4-:cd /home/ubuntu/scrapers/my_scraper/
ubuntu@ip-1-2-3-4-:~/scrapers/my_scraper$ scrapy crawl my_spider现在,我尝试以cron作业的形式运行上面的命令:
sudo crontab -e增加了以下几行:
PATH=/home/ubuntu/.local/bin/
35 14 * * * cd /home/ubuntu/scrapers/my_scraper && scrapy crawl my_spider这不成功..。我也不能诊断出问题..。如果我跑:
grep CRON /var/log/syslog我得到以下输出:
Jul 12 06:47:01 ip-1-2-3-4 CRON[1451]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))
Jul 12 07:17:01 ip-1-2-3-4 CRON[1825]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 08:17:01 ip-1-2-3-4 CRON[1836]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 09:17:01 ip-1-2-3-4 CRON[1849]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 10:17:01 ip-1-2-3-4 CRON[1861]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 11:17:01 ip-1-2-3-4 CRON[1869]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 12:17:01 ip-1-2-3-4 CRON[1878]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 13:17:01 ip-1-2-3-4 CRON[1887]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 14:17:01 ip-1-2-3-4 CRON[1962]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 15:17:01 ip-1-2-3-4 CRON[1970]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 16:17:01 ip-1-2-3-4 CRON[1982]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 17:17:01 ip-1-2-3-4 CRON[1991]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 18:17:01 ip-1-2-3-4 CRON[2002]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 19:17:01 ip-1-2-3-4 CRON[2010]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 20:05:01 ip-1-2-3-4 CRON[2018]: (root) CMD ( test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Jul 12 20:17:01 ip-1-2-3-4 CRON[2022]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 21:17:01 ip-1-2-3-4 CRON[2031]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 22:17:01 ip-1-2-3-4 CRON[2039]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 12 23:17:01 ip-1-2-3-4 CRON[2047]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 13 00:17:01 ip-1-2-3-4 CRON[2156]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 13 01:17:01 ip-1-2-3-4 CRON[2465]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 13 02:17:01 ip-1-2-3-4 CRON[2549]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 13 03:17:01 ip-1-2-3-4 CRON[2980]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 13 04:17:01 ip-1-2-3-4 CRON[3033]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)这很奇怪,因为最近的一行是今天早上4点(当地时间是下午2点),所以也不确定为什么没有记录错误?
注意:/home/ubuntu/.local/bin/是刮伤的地方(我使用命令which scrapy找到了它)
我没有收到任何错误的原因是我的时区错误,在修复时区之后,我得到了以下错误:
刮伤:找不到
我还尝试使用run scper.sh:
#!/bin/bash
cd /home/ubuntu/scrapers/my_scraper
PATH=$PATH:/usr/bin/python3
export PATH
/home/ubuntu/.local/bin/scrapy crawl my_spider我测试了从控制台运行上面的shell脚本,它可以工作,然后我将它作为cron作业添加,但结果仍然相同:
sudo crontab -e增加了以下内容:
39 16 * * * ./home/ubuntu/scrapers/shell-scripts/run-my-scraper.sh但还是刮伤了:没有发现错误。
发布于 2020-07-13 05:05:11
35 14 ** cd /home/ubuntu/铲运机/my_scraper && scrapy抓取my_spider
也许可以尝试删除cd命令。
发布于 2020-07-13 06:23:55
in newscript.sh #!/bin/bash ubuntu 或必要时设置PATH= .由于您将cronjob设置为sudo /home/ubuntu/scrapers/my_scraper/ scrapy爬行my_spider
您说的the部件已经起作用了^
在crontab 35 14 ** /home/blahblah/newscript.sh中
...bottom行,制作一个工作脚本,调用cron作业中的脚本.确保它是可执行的。
发布于 2020-07-13 09:03:55
我的时区出了问题..。我的服务器被设置为UTC,我用澳大利亚时间设置cron作业,这就是我看不到任何错误消息的原因。
修复完时区后,以下内容对我起了作用(感谢@Stephen的评论,他指出我需要使用完整的路径进行刮擦):
crontab -e
PATH=/usr/local/bin
56 18 * * * cd /home/ubuntu/scrapers/my_scraper && /home/ubuntu/.local/bin/scrapy crawl my_spider https://askubuntu.com/questions/1258627
复制相似问题