7

我有一个 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。

我也添加PATH=/usr/bin:/bin:/sbin:/usr/local/bin到我的 crontab 中无济于事。(正如这个问题所建议的那样。)

任何想法为什么我只在 cron 中得到这个错误?谢谢!!

编辑:根据下面的答案,设置shell=False并使stderr=subprocess.STDOUT一切正常......

4

1 回答 1

11

除了标准输出之外,您还应该尝试捕获标准错误,以便您可以准确找出程序失败的原因(假设它确实为您打印了一些错误)

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 回答