Tail

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

  • November 11, 2017

本文指出了使用less +Fover的一些原因tail -f。大多數原因與功能有關,而不是技術原因:less +F可以突出顯示、搜尋、瀏覽文件。

技術原因如何?

AFAIKless使用每秒輪詢一次來更新文件,而tail正如POSIX 定義的那樣,使用休眠 1 秒並複制任何可用字節的循環。這已經足夠了,但 POSIX 也鼓勵實現使用更有效的方法。至少GNU tail使用inotify,所以它更有效。

less還將文件內容保存在記憶體中,因此對於像幾 GB 這樣的大文件,它可能會降低您的電腦速度。

那麼,還有其他技術原因可以使用tail -foverless +F嗎?

我認為您已經涵蓋了要點:less +F讀取整個文件,而在許多系統上tail -f只讀取文件的末尾,甚至在它確實讀取整個文件的系統上,至少它不會保留整個文件在記憶中。這less +F對於非常大的文件來說是不切實際的。但是,您可以執行less -n +F,這會導致less只讀取文件的結尾,但代價是不顯示行號。

在 和 之間less -n +Ftail -f主要區別在於tail在某些平台上使用文件更改通知服務(例如,Linux 上的 inotify),這允許它立即顯示新數據,而顯示新數據less可能需要長達 1 秒因為它循環檢查新數據並在檢查之間休眠。

less +F和之間的另一個區別tail -fless它將呼叫其輸入過濾器,但這通常不會對日誌文件產生任何影響。

一個支持的技術差異是,您可以使用該選項less +F使其在螢幕寬度處截斷行,而不管它有多長,您都別無選擇,只能顯示整行。-S``tail

在介面方面,使用less. tail -f當某事發生時注意是很有用的。您甚至可以在後台執行它。如果發生某些事情並且您想更詳細地查看文件,您可以less在另一個終端中打開它。

如果你想觀看多個文件,multitail是要走的路。即使對於單個文件,multitail 也具有額外的漂亮功能,例如過濾和著色。

引用自:https://unix.stackexchange.com/questions/193620