With --follow (-f), tail defaults to following the file descriptor,
which means that even if a tail’ed file is renamed, tail will continue
to track its end. This default behavior is not desirable when you
really want to track the actual name of the file, not the file descrip‐
tor (e.g., log rotation). Use --follow=name in that case. That causes
tail to track the named file by reopening it periodically to see if it
has been removed and recreated by some other program.
啊,这有一面旗帜。
而不是使用
tail -f /var/log/file
我们应该使用tail -F /var/log/file
tail -F
翻译为tail --follow=name --retry
如;--follow=name
: 跟随文件名而不是文件描述符--retry
:如果文件不可访问,请稍后再试,而不是死掉从人尾:
所以在这种情况下使用该
-F
选项是正确的。确切的答案取决于您的操作系统 - 但在许多情况下,
tail -F
会做正确的事情。tail -F 或 tail --follow=name
恕我直言,按 SIZE 而不是按日期更改日志文件有点奇怪。大多数系统日志(在 unix 或 linux 中)每周或每月轮换一次,而不是基于大小......这是我出于各种原因而喜欢的东西,如果实施的话,它也会解决你的问题。八年后,我不知道我到底在说什么:有很多地方要按大小旋转,因为每天/每周/每月旋转会产生大量文件,这可能会导致严重问题。
从一个更有经验的角度来看,真正的问题是为什么你要坐下来不断地跟踪一个增长如此之快以至于你每天都在旋转它的文件……这就像观看 Matrix 流过一样。
这些天,您最好研究一些大数据日志聚合,如 Splunk 或 Sumologic,它可以将日志事件过滤到类中并根据特定的日志值触发......根本不需要观看实时日志。
我在生产服务器上使用命令:
此外,对于您的目的而言,它可能有点过于繁重,但 splunk 具有尾部功能,可以完全按照您的意愿行事。每天最多 500 MB 是免费的,但如果您的数据超出该大小,则不值得付出代价。