我有一个长期运行的程序,我不想杀,但我确实想看到它的输出(每小时左右一个句子)。
我现在知道我需要刷新脚本中的输出(例如sys.stdout.flush()),但是因为我不想杀掉它,所以我希望有一些聪明的linux命令可以做这个。从我在网上看到的,典型的linux行为是在缓冲区填满时刷新它。
如果没人知道答案,你知道这个缓冲区有多大吗?如果至少知道何时检查,那将是很好的。)
[这是在Ubuntu 10上]
答案 0 :(得分:1)
要在Ubuntu 11.10中查找sys.stdout
的缓冲区大小,我使用了以下简单程序:
import sys, time
buf_size = 1024
for counter in xrange(buf_size):
sys.stdout.write('a')
time.sleep(3)
实验如下:
buf_size
太大,则会立即将部分字符串打印到控制台,并在三秒钟后打印剩余部分。buf_size
太小,则会在三秒钟后打印整个输出。在我的情况下,当缓冲区大小设置为1024时,在程序退出之前我没有得到任何输出,但是当我将它设置为1025时,我看到很多字符,并且在三秒钟后,再看一个字符打印出来。
因此,我系统中的缓冲区大小为1024.在您的系统中可能是相同的,但您可以重复实验来确认。
将来,请在下面找到一些有用的链接: