查詢有壓縮(gz)日誌 log 方法
Contents
系統上的舊日誌通常會被 logrotate 壓成 .gz,這時如果還先手動解壓再查內容,不只慢,還會多佔一份空間。其實大部分情況下,直接在壓縮檔上查就夠了。
這篇把幾個最常用的方法整理一下,之後遇到壓縮日誌排錯時比較不用重找指令。
最基本的兩種方式
1. 先解到標準輸出再接 grep
|
|
gunzip -c 會把內容吐到標準輸出,不會真的在磁碟上解出一份新檔案。
2. 直接用 zgrep
|
|
如果只是單純查關鍵字,通常我會直接用 zgrep,因為它的使用方式和 grep 很接近,記憶成本最低。
什麼時候用哪一種
我自己的判斷很簡單:
- 只查文字關鍵字,用
zgrep。 - 還要串接
awk、sed、cut等其他處理,再用gunzip -c | ...。
這樣比較不會每次都硬把所有需求塞進同一條指令。
進階一點的查法
例如忽略大小寫,同時查多種錯誤:
|
|
這類寫法很適合在大量歷史日誌中先快速縮小範圍。
效能上的注意事項
雖然不用先解壓很方便,但本質上還是要一邊解壓一邊搜尋,所以:
- 檔案很大時會吃 CPU。
- 一次掃很多
.gz也可能花不少時間。 - 如果同一批檔案要反覆查很多次,臨時解壓反而可能比較省事。
小結
查 .gz 日誌最重要的觀念就是:先別急著手動解壓。大多數情況直接用 zgrep 或 gunzip -c 就能處理,而且流程更快、更乾淨。真的需要大量分析時,再考慮集中式日誌系統或臨時解壓處理。