Unix 我怎么能只在整行中跟踪-f呢?

Unix 我怎么能只在整行中跟踪-f呢?,unix,tail,Unix,Tail,我有一个不断更新的大型日志文件(MainLog) 我想创建另一个文件,它只是日志文件的最后n行,但也在更新 如果我使用: tail-f MainLog>RecentLog 我几乎得到了我想要的,除了RecentLog是作为MainLog可用而编写的,并且在任何时候都可能只有最后一行MainLog的一部分 如何向tail指定我只希望它在整行可用时写入的内容?默认情况下,tail输出整行,除非使用-c开关计数字符。差不多 tail -n 20 -f MainLog > RecentLog

我有一个不断更新的大型日志文件(MainLog)

我想创建另一个文件,它只是日志文件的最后n行,但也在更新

如果我使用:

tail-f MainLog>RecentLog

我几乎得到了我想要的,除了RecentLog是作为MainLog可用而编写的,并且在任何时候都可能只有最后一行MainLog的一部分


如何向tail指定我只希望它在整行可用时写入的内容?

默认情况下,tail输出整行,除非使用-c开关计数字符。差不多

 tail -n 20 -f MainLog > RecentLog 
(将您希望在第二个文件中添加的行数替换为“20”)应该可以正常工作


但如果不这样做,那么使用grep对输出进行行缓冲可能会修复这种情况。请参阅。

经过多次尝试,对于我来说,多个文件(非常好)的唯一解决方案是命令。它是一个小型二进制文件,可以读取多个文件描述符并将数据逐行打印到标准输出


我的用例是在后台生成多个长时间运行的
ssh
命令,并跟踪它们的输出,而不会在这两行之间出现混乱或中断。

我很确定这是-我认为这是tail的一个特性。如何确保只写入整行的想法?这可能适用于单个监视文件,但它绝对不能防止在跟踪多个日志文件(
tail-f log1 log2
)时断开和损坏行。请参阅我的答案以获得解决方案。我认为您需要调查
logrotate
。。。