`tail -f` 比 `less +F` 更高效吗?

`tail -f` 比 `less +F` 更高效吗?

本文指出了使用less +Fover 的一些原因tail -f。大部分原因都与特征, 不是技术的原因:less +F可以突出显示、搜索、浏览文件。

怎么样技术的原因?

AFAIK,less使用每秒轮询来更新文件,而tail, asPOSIX 定义使用休眠 1 秒的循环并复制所有可用字节。这已经足够了,但 POSIX 还鼓励实现使用更有效的方法。至少GNU 尾巴使用inotify,所以效率更高。

less还将文件内容保留在内存中,因此对于大文件(例如几千兆字节),它会降低计算机的速度。

那么还有其他的吗技术的使用tail -f过度的理由less +F

答案1

我认为您已经涵盖了要点:less +F读取整个文件,而在许多系统上tail -f仅读取文件的末尾,即使在读取整个文件的系统上,至少它不会保留整个文件在记忆中。这less +F对于非常大的文件来说是不切实际的。但是,您可以运行less -n +F,这会导致less仅读取文件末尾,但代价是不显示行号。

在底层,less -n +F和之间的tail -f主要区别在于,tail在某些平台上使用文件更改通知服务(例如,Linux 上的 inotify),这允许它立即显示新数据,而less可能需要长达 1 秒的时间才能显示新数据因为它会在循环中检查新数据并在检查之间休眠。

less +F和之间的另一个区别tail -f是,它将less调用其输入过滤器,但这通常不会对日志文件产生任何影响。

支持的一个技术差异less +F是,您可以使用选项使其在屏幕宽度处截断行-S,而tail您别无选择,只能显示整行,无论它有多长。

从接口角度来看,使用less. tail -f当事情发生时注意到是有用的。您甚至可以在后台运行它。如果发生某些情况并且您想更详细地查看该文件,您可以less在另一个终端中打开它。

如果您想观看多个文件,多尾是要走的路。即使对于单个文件,多尾也具有额外的漂亮功能,例如过滤和着色。

相关内容