有时,跟踪不断更新的输出日志并不能给出整行。这是为什么?
grep pattern input_file > output.log &
tail output.log
为什么它不完整打印最后一行?
答案1
读取和写入文件不是行原子的,也不tail -f
是行缓冲的。因此,当tail -f
在写入文件时读取文件时,在写入文件的进程写入行尾之前,它可能会到达文件末尾(因此停止打印)。当这种情况发生时,它会打印一条不完整的行,因为这就是它看到的全部内容。
有时,跟踪不断更新的输出日志并不能给出整行。这是为什么?
grep pattern input_file > output.log &
tail output.log
为什么它不完整打印最后一行?
读取和写入文件不是行原子的,也不tail -f
是行缓冲的。因此,当tail -f
在写入文件时读取文件时,在写入文件的进程写入行尾之前,它可能会到达文件末尾(因此停止打印)。当这种情况发生时,它会打印一条不完整的行,因为这就是它看到的全部内容。