Я работал с небольшим скриптом python, который выполняет команды bash. Программа работала нормально около месяца. Недавно я попытался запустить скрипт, передав ему эту команду:
my_launcher.py -c /path/to/config/file.json
(BTW, когда команда вводится в терминал, я не вызываю ошибки и работает нормально), и я получаю следующее сообщение:
RuntimeError: Command '['bash', '-c', 'my_launcher.py -c /path/to/config/file.json']' returns non-zero exit status (code5)
Посмотрев на Google, я нашел определения для кодов возврата 0, 1 и 2, но ничего не сделал для кода 5. Подумайте, знает ли кто-нибудь об этом. Что это означает? Как это можно решить? и т.п.
Это код python, который вызывает ошибку:
try :
#check_output produces byte string
#raises exception if command returns a non-zero exit status (error occurs during processing of command)
string_of_text_rc = subprocess.check_output(['bash', '-c', bashCommand])
except subprocess.CalledProcessError as e:
raise RuntimeError("Command '{}' returns non-zero exit status (code{})".format(e.cmd, e.returncode))
При удалении try/except
, это tceback:
Traceback (most recent call last):
File "bash_cmd.py", line 27, in <module>
run_cmd('my_launcher.py -c /path/to/config/file.json')
File "bash_cmd.py", line 17, in run_cmd
string_of_text_rc = subprocess.check_output(['bash', '-c', bashCommand])
File "/usr/lib64/python2.7/subprocess.py", line 575, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['bash', '-c', 'my_launcher.py -c /path/to/config/file.json']' returned non-zero exit status 5
** EDIT: правильный вывод содержится в файле e.output. Это означает, что команда запущена и возвращает правильный результат. Я действительно не знаю, почему я получаю этот код ошибки.
Для записи здесь, как вы должны запускать ваш.py файл:
result = subprocess.check_output([
sys.executable, 'my_launcher.py', '-c', path_to_json])
И вот как вы запускаете команды оболочки:
result = subprocess.check_output(bash_command, shell=True)
Для вашей проблемы - можете ли вы удалить try/except
из вашего кода, чтобы мы могли увидеть полную трассировку ошибок? Некоторая хорошая информация может быть скрыта там.
my_launcher.py
.