7

一連のCasperJSタスクを管理し、結果を処理する Python スクリプトがあります。コマンドラインからは問題なく実行できますが、cron でスクリプトを実行すると、次のエラーが発生します。

CalledProcessError: Command '['/path/to/casperjs', '/path/to/doSomething.js', 'args']' returned non-zero exit status 1

Python では、CasperJS を呼び出します。

response = subprocess.check_output(['/path/to/casperjs', '/path/to/doSomething.js', 'args'], shell=True)

私も試してみshell=FalseましPopenたが、同じ結果が得られます。また、コマンド全体を (リストではなく) 文字列にしようとしましたが、それも役に立ちませんでした。

シェルで実行すると、 Running'/path/to/casperjs /path/to/doSomething.js args'は終了コード 0 を返します。

PATH=/usr/bin:/bin:/sbin:/usr/local/bincrontab にも追加しましたが、役に立ちませんでした。(この質問で示唆されているように。)

cronでのみこのエラーが発生する理由はありますか? ありがとう!!

編集:以下の回答に従って、設定shell=Falsestderr=subprocess.STDOUTてすべてを機能させました...

4

1 に答える 1

11

プログラムが失敗した理由を正確に知ることができるように、stdout に加えて stderr をキャプチャするようにしてください (実際にいくつかのエラーが出力されると仮定します)。

cmd = ['/path/to/casperjs', '/path/to/doSomething.js', 'args']
response = subprocess.check_output(cmd, 
                shell=True,
                stderr=subprocess.STDOUT)
于 2012-04-08T20:46:15.350 に答える