2011-12-16 25 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简单。有任何想法吗?

这里是我的Python脚本供参考:

import sys 
from time import sleep 

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


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

有趣的是,如果我删除“睡眠(5.0)”,它似乎工作。 – 2011-12-16 16:35:42

回答

11

也许你的标准输出不立即刷新,因为它没有连接到终端。尝试使用

import sys 
sys.stdout.flush() 

刷新您的输出。

+0

这几乎可以肯定是这种情况。如果你拿出“睡眠(5.00)”,那么你会压倒缓冲区,系统会为你冲洗。这是一个通用的情况,并不是Python特有的。 – Mei 2011-12-16 17:02:23