2011-12-16 2 views
4

J'ai un simple script python qui exécute simplement une boucle infinie et affiche "running". Quand je le lance avec nohup en arrière-plan, je vois un fichier nohup.out dans mon répertoire courant mais rien n'y est jamais écrit. Je suis confus. Je l'ai essayé ce qui suitPourquoi mon nohup.out est-il vide?

nohup test.py 

écrit à nohup.out mais évidemment ne fonctionne pas en arrière-plan

nohup test.py & 

fonctionne en arrière-plan, mais ne pas écrire à nohup.out

nohup test.py 2>&1 & 

fonctionne également en arrière-plan, mais n'écrit pas à nohup.out

Je parie que je manque quelque chose g simple. Des idées?

Voici mon script python pour référence:

import sys 
from time import sleep 

def main(): 
    print "Starting...." 
    while True: 
     print "running..." 
     sleep(5.00) 


if __name__ == "__main__": 
    main() 
+0

Fait intéressant si je supprime le "sommeil (5.0)", il semble fonctionner. –

Répondre

11

Peut-être que votre stdout n'est pas immédiatement lavé, car il est pas attaché à un terminal. Essayez d'utiliser

import sys 
sys.stdout.flush() 

pour vider votre sortie.

+0

C'est presque certainement le cas. Si vous sortez le 'sleep (5.00)' alors vous surchargez le tampon et le système se vide pour vous. C'est un cas générique, et pas spécifique à Python non plus. – Mei

Questions connexes