Python Subprocess仅在cron中返回非零退出状态

时间:2012-04-08 20:39:46

标签: python subprocess crontab casperjs

我有一个Python脚本来管理一系列CasperJS任务并处理结果。它从命令行运行良好,但是当我在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=FalsePopen,但我得到的结果相同。我也尝试将整个命令变成一个字符串(而不是列表),但这也无济于事。

在shell中运行时,运行'/path/to/casperjs /path/to/doSomething.js args'会返回退出代码0。

我还在我的crontab中添加了PATH=/usr/bin:/bin:/sbin:/usr/local/bin但无济于事。 (如this question中所述。)

为什么我只在cron中收到此错误的任何想法?谢谢!

编辑:根据以下答案,设置shell=Falsestderr=subprocess.STDOUT会使一切正常......

1 个答案:

答案 0 :(得分:10)

除了stdout之外,你应该尝试捕获stderr,以便你可以找到程序失败的确切原因(假设它确实为你打印了一些错误)

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