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