2

我有一个scrape.sh看起来像这样的 cron 工作:

#!/bin/bash
touch rage
cd /etc/myproject/scraper
scrapy crawl foosite --set FEED_URI=../feeds/foosite.xml --set FEED_FORMAT=xml
scrapy crawl barsite --set FEED_URI=../feeds/barsite.xml --set FEED_FORMAT=xml

当它执行时,文件 rage 确实被创建并从我的系统日志判断它确实以 root 身份运行,所以权限应该不是问题。

May  6 17:35:01 server CRON[10233]: (root) CMD (/etc/myproject/scraper/scrape.sh)
May  6 17:40:01 server CRON[17804]: (root) CMD (/etc/myproject/scraper/scrape.sh)

当我运行scrape.sh它时,它按预期执行并将foosite.xml文件放入../feeds目录中,该目录存在并且在 cron 作业启动时为空。我能做些什么来解决这个问题?

4

2 回答 2

4
  1. 如果我要猜测问题是环境问题(例如,scrapy 不在路径中)。
  2. 要调试,请确保您的 cron 作业将标准输出和标准错误发送到日志文件/和/或系统日志
于 2011-05-06T17:53:08.347 回答
2

也许没有找到命令scrapy?Cron 作业通常获得与交互式 shell 不同的 shell 环境,因此您的 PATH 中可能缺少 scrapy,您应该使用 /some/full/path/to/scrapy。

如果这没有帮助,请尝试将 stdout 和 stderr 重定向到某些文件,这样您就可以看到输出是什么?

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

于 2011-05-06T17:59:43.117 回答