6
我有一個Python腳本,用於管理一系列CasperJS任務並處理結果。它在命令行中運行良好,但是當我運行在cron腳本,我得到的錯誤: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
爲好吧,但我得到了同樣的結果。我也嘗試使整個命令成爲一個字符串(而不是列表),但這也沒有幫助。
運行'/path/to/casperjs /path/to/doSomething.js args'
在shell中運行時返回退出代碼0。
我也添加PATH=/usr/bin:/bin:/sbin:/usr/local/bin
到我的crontab無濟於事。 (如this question所示。)
任何想法,爲什麼我只在cron中出現此錯誤?謝謝!!
編輯:按照下面的答案,設置shell=False
和stderr=subprocess.STDOUT
使一切工作......
我補充一點,對於「此命令的工作中最常見的原因,當我手動而不是運行在cron下/主管/新貴/ .. 。「是一個環境變量 - 並不總是PATH--是不同的或者是missin G。 – mattbornski 2012-04-08 21:00:06
是的,我正在檢查所有的環境變量,但設置'shell = False'並添加'stderr = subprocess.STDOUT',現在一切都變魔術般的工作?! – arboc7 2012-04-08 21:02:28
@mattbornski:雅我同意。它的要麼是,要麼是這個過程在crontab設置的任何用戶下運行都會遇到問題。我不想猜測太多,而是試着弄清楚真正的錯誤可能是什麼 – jdi 2012-04-08 21:03:45