Использование nohup при попытке запустить скрипт Python35?

Я пытаюсь запустить программу python на сервере Linux, используя консоль шпатлевки, извлекая программу и пакеты из папки, загруженной на сервер через WinSCP. Когда я обычно запускаю программу с помощью команды:

python35 program.py

Он отлично работает и начинает работать. Проблема в том, что мне нужно запустить программу на сервере, когда мой компьютер выключен и окно шпатлевки исчезло.

Я читал, что вы можете использовать команду nohup для этого всякий раз, когда я запускаю:

nohup python35 program.py &

Он возвращает:

ignoring input and appending output to `nohup.out'
nohup: failed to run command `python35': No such file or directory

В этот момент программа не запускается, и на WinSCP создается пустой файл nohup.out.

Почему это происходит? Как я могу это исправить? До сих пор я не смог найти эквивалентных ошибок на SO.


person TheSaint321    schedule 30.10.2017    source источник
comment
В большинстве случаев команда будет python3.5. Так что же такое python35 на самом деле? Скрипт, ссылка, бинарник, псевдоним?   -  person Klaus D.    schedule 30.10.2017
comment
Точно сказать не могу. Какую команду я могу использовать для проверки?   -  person TheSaint321    schedule 30.10.2017
comment
Мой руководитель сказал мне Python35 как команду для запуска python3.5. Когда я пытаюсь запустить команду python3.5, она возвращает команду, не найденную.   -  person TheSaint321    schedule 30.10.2017
comment
то он не установлен. поговорите со своим куратором.   -  person Jason Hu    schedule 30.10.2017
comment
Каков результат type python35 ?   -  person Mark Plotnick    schedule 30.10.2017
comment
python35 имеет псевдоним `/opt/rh/rh-python35/root/usr/bin/python'   -  person TheSaint321    schedule 30.10.2017
comment
Это твоя проблема. Используйте полный путь для вызова исполняемого файла Python 3.5, и ваша команда должна работать.   -  person lifecrisis    schedule 31.10.2017
comment
Обходной путь — запустить alias nohup='nohup ', так как завершающий пробел позволит оболочке рассматривать все, что следует за nohup, как потенциальный псевдоним. Но вам лучше добавить символическую ссылку python35 в каталог, который находится в вашем $ PATH, чтобы любая программа, которая ее вызывает, получила правильную вещь.   -  person Mark Plotnick    schedule 31.10.2017


Ответы (1)


Как указано выше в комментариях, python35 — это псевдоним оболочки. Поскольку nohup запускает данную команду в подоболочке, псевдонимы, определенные в родительском процессе оболочки, будут недоступны.

Используйте следующую команду:

nohup /opt/rh/rh-python35/root/usr/bin/python program.py &
person lifecrisis    schedule 31.10.2017