2011-12-16 3 views
4

У меня есть простой скрипт python, который просто запускает бесконечный цикл while и печатает «работает». Когда я запускаю его с nohup в фоновом режиме, я вижу файл nohup.out в текущем каталоге, но ничто никогда не записывается на него. Я запутался. Я попытался следующиеПочему мой nohup.out пуст?

nohup test.py 

пишет в nohup.out, но, очевидно, не работает в фоновом режиме

nohup test.py & 

работает в фоновом режиме, но не пишет nohup.out

nohup test.py 2>&1 & 

также работает в фоновом режиме, но не пишет в nohup.out

Бьюсь об заклад, что я пропускаю что-то g простой. Есть идеи?

Вот мой питон скрипт для справки:

import sys 
from time import sleep 

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


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

Интересно, если я удалю «сон (5.0)», похоже, он работает. –

ответ

11

Может быть, ваш стандартный вывод не очищается сразу, потому что он не подключен к терминалу. Попробуйте использовать

import sys 
sys.stdout.flush() 

, чтобы очистить ваш выход.

+0

Это почти наверняка. Если вы выберете 'sleep (5.00)', то вы перегрузите буфер, и система сбросит вас. Это общий случай, а также не свойственный Python. – Mei