Musíte vyprázdnit stdout
po vytištění:sys.stdout.flush()
; jinak bude chvíli trvat, než se naplní stdout buffer.
Předejte pythonu příznak -u pro zrušení vyrovnávací paměti stdout
nohup python -u test.py &
Jinak Python uloží stdout do vyrovnávací paměti. To nevyžaduje změnu kódu.
Z manuálové stránky:
-u Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, also put stdin, stdout
and stderr in binary mode. Note that there is internal buffering in xreadlines(), readlines() and file-object
iterators ("for line in sys.stdin") which is not influenced by this option. To work around this, you will want
to use "sys.stdin.readline()" inside a "while 1:" loop.
Právě jsem měl podobný problém. Můj skript fungoval dobře bez nohyp. S nohoup by skript selhal s chybou SyntaxError.
Problém byl v kontextu provádění nohup, který by používal alias python
mapováno na python2
místo python3
.
Opraveno zadáním python3
místo python
.
Jak mohu použít výstražný dialog s Pythonem v linuxu?
Nelze odpojit podřízený proces, když je hlavní proces spuštěn ze systemd