tail -f
是否比 less +F
更有效?
本文指出了使用
less +F
over的一些原因tail -f
。大多數原因與功能有關,而不是技術原因:less +F
可以突出顯示、搜尋、瀏覽文件。技術原因如何?
AFAIK
less
使用每秒輪詢一次來更新文件,而tail
正如POSIX 定義的那樣,使用休眠 1 秒並複制任何可用字節的循環。這已經足夠了,但 POSIX 也鼓勵實現使用更有效的方法。至少GNU tail使用inotify,所以它更有效。
less
還將文件內容保存在記憶體中,因此對於像幾 GB 這樣的大文件,它可能會降低您的電腦速度。那麼,還有其他技術原因可以使用
tail -f
overless +F
嗎?
我認為您已經涵蓋了要點:
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
在另一個終端中打開它。如果你想觀看多個文件,multitail是要走的路。即使對於單個文件,multitail 也具有額外的漂亮功能,例如過濾和著色。