Devi svuotare stdout
dopo la stampa:sys.stdout.flush()
; altrimenti ci vorrà un po' per riempire il buffer stdout.
Passa a Python il flag -u per l'unbuffering di stdout
nohup python -u test.py &
Python bufferizzerà lo stdout altrimenti. Ciò non richiede una modifica del codice.
Dalla pagina man:
-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.
Ho appena avuto un problema simile. La mia sceneggiatura ha funzionato bene senza nohup. Con nohup, lo script andrebbe in crash con un SyntaxError.
Il problema era il contesto di esecuzione di nohup che usava un alias di python
mappato a python2
invece di python3
.
Risolto specificando python3
invece di python
.