繁体   English   中英

Python 子进程仅在 cron 中返回非零退出状态

[英]Python Subprocess returns non-zero exit status only in cron

我有一个 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 ,但我得到了相同的结果。 我还尝试将整个命令设为字符串(而不是列表),但这也无济于事。

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

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

知道为什么我只在 cron 中收到此错误吗? 谢谢!!

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM