Подпроцесс Python возвращает ненулевое состояние выхода только в 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=False и Popen, но я получаю тот же результат. Я также попытался сделать всю команду строкой (вместо списка), но это тоже не помогло.

под управлением '/path/to/casperjs /path/to/doSomething.js args' возвращает код выхода 0 при запуске в оболочке.

Я также добавил PATH=/usr/bin:/bin:/sbin:/usr/local/bin к моему crontab безрезультатно. (Как предложено в этот вопрос.)

есть идеи, почему я получаю эту ошибку только в cron? Спасибо!!

EDIT: в соответствии с ответом ниже, параметр shell=False и stderr=subprocess.STDOUT сделал все работы...

1 ответов


вы должны попытаться захватить stderr в дополнение к stdout, чтобы вы могли точно узнать, почему программа терпит неудачу (предполагая, что она действительно печатает некоторые ошибки для вас)

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