文件截断时 tail -f 中断

Pro*_*mar 2 osx tail

我正在使用tail -f(在 Mac OS X el capan 上的终端中)查看对我的文件的实时更改(使用 PERL 脚本从数据库中提取数据的结果)。但是,有时,Perl 脚本会截断文件并向其中添加新数据。有时,当这种情况发生时,它会给我这样的信息:

tail: test.txt: file truncated
Run Code Online (Sandbox Code Playgroud)

然后之后不显示文件的任何内容。这似乎只发生在我用比以前更少的行替换文件时。当新行比运行脚本之前更长时,我不会收到此错误并且tail -f继续工作。我已经确认,事实上,文件中的数据在tail -f收到此(错误?)消息后没有显示。

我见过类似的问题:Suppress 'file truncated' messages when using tail

tail -f test.txt 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

但这只是抑制消息并仍然中断,它不会继续向我显示较短的截断文件内容。

是否有更好的命令可用于实时查看文件的更改?或者tail -f当文件被截断时不关心的标志?

小智 5

正如其他人指出的那样,tailOS X 附带的命令没有--retry选项。但是,您可以简单地安装具有该选项的 GNU 版本的 tail;它是GNU coreutils 的一部分。例如,如果您使用 MacPorts,则可以通过运行sudo port install coreutils.

现场观看文件的替代方法是watch命令,不幸的是,OS X 也没有提供该命令。但是,您可以使用这个简单的解决方法