为什么拖尾输出日志有时会给出部分行?

为什么拖尾输出日志有时会给出部分行?

有时,跟踪不断更新的输出日志并不能给出整行。这是为什么?

grep pattern input_file > output.log &
tail output.log

为什么它不完整打印最后一行?

答案1

读取和写入文件不是行原子的,也不tail -f是行缓冲的。因此,当tail -f在写入文件时读取文件时,在写入文件的进程写入行尾之前,它可能会到达文件末尾(因此停止打印)。当这种情况发生时,它会打印一条不完整的行,因为这就是它看到的全部内容。

相关内容