我的Raspberry Pi上有一个连续运行的任务,每秒返回一行文本。我用
将它附加到log.txtcommand >> log.txt
现在这个log.txt只会批量更新,大约每5分钟更新一次。如何修复它随附的每一个新行更新,因此每秒都会更新?
答案 0 :(得分:1)
如果command
使用printf
或其他C库函数而不是原始write
系统调用,则输出始终在程序中缓冲。
如果输出到达终端,则它是行缓冲的,因此它会在每个\n
之后写入。
但如果它进入文件或管道,缓冲区将会大得多,可能是整个页面,如4096字节。你能改变command
的代码吗?
答案 1 :(得分:0)
如果您使用C编程:关闭文件句柄并在任何行后打开它。 不要指望有好的表现。
在某些情况下,如果文件指针未连接到终端,则命令使用输出缓冲。
command | while IFS='' read -r in; do
echo "$in" >> log.txt
done
这只是猜测,但写入管道可能会关闭缓冲。 你可以在程序配置中关闭缓冲吗?