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

cuo*_*glm 38 less tail

这篇文章指出了使用less +Fover 的一些原因tail -f。大多数原因与功能有关,而不是技术原因:less +F可以突出显示、搜索、浏览文件。

怎么样的技术原因是什么?

AFAIK,less使用轮询每一秒更新文件,同时tail,如POSIX定义使用一个循环,1秒睡觉和副本可用任何字节。这已经足够了,但 POSIX 还鼓励实现使用更有效的方法。至少GNU tail使用inotify,所以效率更高。

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

那么,还有其他技术原因可以使用tail -foverless +F吗?

Gil*_*il' 45

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

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

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

有利于的技术差异 less +F是,您可以使用该-S选项截断屏幕宽度处的行,而tail无论多长,您都别无选择,只能显示整行。

在界面方面,使用没有太大的优势 less.? tail -f当某事发生时注意是有用的。您甚至可以在后台运行它。如果发生某些事情并且您想更详细地查看该文件,您可以less在另一个终端中打开它。

如果您想观看多个文件,multitail是最佳选择。即使对于单个文件,multitail 也具有额外的漂亮功能,例如过滤和着色。