Linux
tac 命令對大文件的效率如何
tac
命令( reversed )可cat
用於向後讀取文件,就像cat
從開頭讀取文件一樣。我想知道,這有多有效。它是否必須從頭開始讀取整個文件,然後在到達末尾時反轉一些內部緩衝區?我打算將它用於一些經常呼叫的監視腳本,該腳本需要檢查數百兆字節大小的文件的最後 n 行。但是,我不希望通過一遍又一遍地讀取文件(大約每分鐘一次左右)來導致沉重的 I/O 負載或用其他無用的資訊填充記憶體空間。
任何人都可以闡明該命令的效率嗎?
如果使用得當,
tac
效率與tail
- 一次讀取 8K 塊,從後面搜尋相當有效。除其他外,“正確使用”需要在您的文件上為其提供直接、可搜尋的句柄:
tac yourfile # this works fine
…或者…
tac <yourfile # this also works fine
不是
# DON'T DO THIS: # this forces tac to copy "yourfile" to a new temporary file, then uses its regular # algorithm on that file. cat yourfile | tac
logstash
也就是說,與使用可以輸入索引儲存和/或生成事件以供 CEP 引擎進行實時分析的類似工具相比,我認為重複執行這種性質的工具是一種非常低效的日誌掃描方式例如Esper或Apache Flink。