Vous devez vider stdout
après impression :sys.stdout.flush()
; sinon, il faudra un certain temps pour remplir le tampon stdout.
Passez à python l'indicateur -u pour supprimer la mémoire tampon de la sortie standard
nohup python -u test.py &
Sinon, Python mettra en mémoire tampon stdout. Cela ne nécessite pas de changement de code.
À partir de la page de manuel :
-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.
Je viens d'avoir un problème similaire. Mon script a bien fonctionné sans nohup. Avec nohup, le script plantait avec une SyntaxError.
Le problème était le contexte d'exécution de nohup qui utiliserait un alias de python
mappé à python2
au lieu de python3
.
Corrigé en spécifiant python3
au lieu de python
.