我怎么能尾随-f但只能整行?

时间:2015-01-23 19:08:17

标签: unix tail

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

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

如果我使用:

  

tail -f MainLog> RecentLog

我得到了我想要的东西,除了RecentLog被写为MainLog可用,并且可能在任何时候只有最后一条MainLog线的一部分。

如何在WHOLE行可用时指定尾部我只想写它?

2 个答案:

答案 0 :(得分:1)

默认情况下,tail会输出整行,除非您使用-c开关来计算字符数。像

这样的东西
 tail -n 20 -f MainLog > RecentLog 

(将你想要的第二个文件前面的行数替换为" 20")应该可以正常工作。

但是,如果不是,那么使用grep对行缓冲输出可能会解决这个问题。请参阅this question

答案 1 :(得分:1)

经过多次尝试,多个文件的唯一解决方案对我来说非常有效({3}}命令。它是一个小二进制文件,它读取多个文件描述符并将数据打印到stdout linewise。

我的用例是在后台生成多个长时间运行的loopback:security:*命令并跟随它们的输出,而不会出现乱码或中断的行。