Запустите скрипт python в фоновом режиме на сервере и получите вывод скрипта - PullRequest
0 голосов
/ 16 апреля 2020

Итак, мне нужно запустить скрипт python на сервере, но Я хочу, чтобы скрипт выводил все, что выводится в файл, чтобы я мог проверить, что он сделал после его завершения. Однако мне также нужно, чтобы скрипт продолжал работать, если туннель s sh к серверу прерывается или закрывается. Вот что я знаю:

python3 run.py >> out.txt
будет выводить правильно.

nohup python3 run.py
будет выводить правильно и будет защищен от прерывания. он также будет выводиться в nohup.out, но не будет работать в фоновом режиме текущего сеанса (таким образом, мешая мне делать что-либо еще).

Так что я бы подумал

nohup python3 run.py >> out.txt &
будет работать для меня, но это не так.
Я пробовал разные комбинации того, что я хочу, но просто не могу заставить его работать ... как только я добавляю &, кажется, что вывод файлов просто прекращается , Я понятия не имею, почему, хотя. любая помощь приветствуется!

Ответы [ 3 ]

0 голосов
/ 16 апреля 2020

Самый простой способ - запустить команду в фоновом режиме с помощью &. Тогда просто напишите:

disown -a
0 голосов
/ 16 апреля 2020

для тех, кто испытывает подобные проблемы, существует проблема с nohup и python буферизацией вывода, я думаю.
смотри: Nohup не записывает журнал в выходной файл .

но исправление:

nohup python3 -u run.py >> out.txt &

(Ответ предоставлен @VPfB)

0 голосов
/ 16 апреля 2020

На то, что вы ищете, уже дан ответ здесь

https://askubuntu.com/questions/8653/how-to-keep-processes-running-after-ending-ssh-session

Вам нужно использовать tmux, чтобы он работал в фоновом режиме

...