tail -f是否比less + F更有效?


34

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

技术原因如何?

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

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

那么,有没有任何其他技术使用的原因tail -fless +F

Answers:


37

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

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

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

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

在接口方面,使用并没有太多优势less。 tail -f通知发生什么情况很有用。您甚至可以在后台运行它。如果发生某些情况,并且您想更详细地查看文件,则可以less在另一个终端中打开它。

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


对于非常大的文件,'less -n 99.99p + F'是否会减少读取整个文件的次数?
cuonglm

1
@cuonglm嗯,是的。仅仅less -n是不够的,这使得少使用寻求到终端,然后读回策略。
吉尔(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.