redhat linux伺服器中讀取大日誌檔案的問題

redhat linux伺服器中讀取大日誌檔案的問題

我的 jboss 應用程式伺服器產生一些相當大的日誌文件,通常約為 8 到 10 GB。

答案1

嘗試使用 split 指令。

split --bytes=100M <logfile> <logfile>

是的,更頻繁地輪換日誌檔案。不這樣做就是令人髮指的罪。

答案2

我通常用來less查看日誌檔。它可以查看巨大的日誌檔案(數千兆位元組)。less也能夠查看壓縮日誌檔案(以 結尾.gz)。

您也可以用於grep過濾特定模式。

答案3

您也可以使用“head”列出第一行,或使用“tail”列出文件末尾。如果您在「head」或「tail」後面附加一個數字,它將顯示該行數。

艾倫

答案4

我們這裡也有類似的問題(日誌檔案很大,但不是 JBoss),我只能說「grep 是你的朋友」。我假設你的日誌檔看起來像這樣:

Dec 27 08:14:35 hostname kernel: bnx2: eth1 NIC Copper Link is Up, 1000 Mbps full duplex
Dec 27 08:14:35 hostname kernel: eth2: Link is Up 1000 Mbps Full Duplex, Flow Control: None
Dec 27 08:14:35 hostname kernel: eth3: Link is Up 1000 Mbps Full Duplex, Flow Control: None
Dec 27 08:14:36 hostname pcscd: hotplug_libusb.c:402:HPEstablishUSBNotifications() Driver ifd-egate.bundle does not support IFD_GENERATE_HOTPLUG. Using active polling instead.

(這些是從 /var/log/messages 檔案中提取的,但其想法是每個條目前面都有一個時間戳)。

鑑於您的日誌檔案充滿了時間戳,我所做的類似於以下內容:

grep '^`date "+%b %d"` 08:14' /my/log/file > /tmp/814amLog.txt

這其實只是 grep'ing 今天的時間戳,即

grep "^Dec 27 08:14" /my/log/file > /tmp/814amLog.txt

然後我 less 或 vim -R 814amLog.txt 檔案。這個想法是將其分成您感興趣的一小部分。

作為第一個回覆給出的 split 命令是可用的,但根據我的經驗,給出了相當任意的結果。通常我會尋找「大約此時」發生的事情。因此,按日期和時間進行 grep 的使用更為頻繁。

您可以編寫一個 cron 作業腳本,以便在晚上對日誌檔案進行 grep 並將其保存在適當的位置,這樣您就不必臨時執行此操作。我還強烈建議創建一個作業來 gzip 壓縮一天左右之前的日誌文件,因為您會驚訝地發現節省了多少磁碟空間。

相關內容