2

次のようなcronジョブscrape.shがあります。

#!/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

実行すると、ファイルの怒りが作成され、syslog から判断すると、ルートとして実行されるため、権限は問題になりません。

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 ジョブが標準出力と標準エラーをログ ファイルまたは syslog に送信していることを確認してください。
于 2011-05-06T17:53:08.347 に答える
2

たぶん、コマンドスクレイプが見つかりませんか?cronジョブは通常、インタラクティブシェルとは異なるシェル環境を取得するため、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 に答える