当我将python2.6脚本的stdout输出作为一个新手工作运行时,我很难将其保存到文件中。
这是我目前的测试脚本:
#!/usr/bin/python
from time import sleep
import sys
while 1:
print "Hello from stdout"
print >> sys.stderr, "Hello from stderr"
sleep(1)
如果我做$ myscript >> /var/log/myscript
工作正常。我看到了两个。
但是,作为一个新手脚本,如果我使用以下conf
/etc/init/myscript.conf:
exec /path/to/myscript >> /var/log/myscript 2>&1
我明白这一点:
Hello from stderr
Hello from stderr
Hello from stderr
Hello from stderr
Hello from stderr
Hello from stderr
如果我为stderr和stdout使用不同的文件,它们都被创建,但是stdout总是空的。
我做错了什么?
答案 0 :(得分:3)
缓冲和冲洗就是猜测。
stderr通常是无缓冲的流,而stdout是缓冲的。当您将其发送到文件时,它将以4k块(通常)进行缓冲。
如果进行以下更改:
while 1:
print "hello from stdout"
sys.stdout.flush()
print >> sys.stderr, "Hello from stderr"
sleep(1)
您应该在文件中看到输出。