Не удается увидеть вывод скрипта Python в файле nohup.out - PullRequest
0 голосов
/ 13 октября 2019

У меня есть скрипт bash, который в цикле выполняет скрипт на python:

 while true; do python3 script.py && break; done

, запущенный с nohup:

nohup ./run_script.sh &

Почему, если я запускаю команду:

tail -f nohup.out

Я не вижу вывод скрипта Python?

Я правильно вижу скрипт в моем запущенном процессе:

pi        2757  1.5  3.4  37268 33064 ?        S    15:06   0:18 python3 script.py
pi        2819  0.0  0.0   1908   388 ?        S    15:07   0:00 /bin/sh ./run_script.sh
pi        2820  1.6  3.5  37268 33096 ?        S    15:07   0:18 python3 script.py

Если я непосредственно запускаю скрипт Pythonс nohup я вижу вывод, но мне нужно перезапускать скрипт каждый раз, когда он выходит из строя, поэтому мне нужно запустить его с помощью скрипта bash

Возможно, мне не хватает некоторой концепции, касающейся использования nohup.

1 Ответ

0 голосов
/ 13 октября 2019

Я решил изменить сценарий следующим образом:

while true; do python3 -u script.py && break; done

Выходной файл nohup.out во время выполнения остается пустым до завершения выполнения. Это происходит из-за буферизации вывода. Добавляя флаг -u, я могу избежать буферизации вывода.

Другие подробности см. На этой странице блога https://janakiev.com/blog/python-background/.

...