2015-08-25 1 views
1

Voici un script python simple que je veux exécuter en utilisant nohup sous Linux. Je cours à l'aide de ce qui suit (sous linux):Nohup ne fonctionne pas avec &

nohup python test.py & 

La commande semble tout simplement pas faire quoi que ce soit, rien est ajouté à nohup.out. Si je l'exécute sans le &, la sortie s'affiche correctement sur la fenêtre du terminal. Qu'est-ce que je rate?

import time 

def test(): 
    while(True): 
     print "Woke up!" 
     time.sleep(5) 

if __name__ == "__main__": 
    test() 

Répondre

8

python passe le drapeau -u pour stdout totale de tampon

nohup python -u test.py & 

Python stdout autrement tampon. Cela ne nécessite pas de changement de code.

De la page 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. 
+0

J'avais des problèmes avec un script python ne fonctionne pas avec nohup et cela le fixe. Beaucoup de gracias. –

4

Vous devez rincer stdout après l'impression: sys.stdout.flush(); sinon, il faudra un certain temps pour remplir le tampon stdout.