我正在使用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
正如其他人指出的那样,tail
OS X 附带的命令没有--retry
选项。但是,您可以简单地安装具有该选项的 GNU 版本的 tail;它是GNU coreutils 的一部分。例如,如果您使用 MacPorts,则可以通过运行sudo port install coreutils
.
现场观看文件的替代方法是watch
命令,不幸的是,OS X 也没有提供该命令。但是,您可以使用这个简单的解决方法。