天天看點

Linux 中實時檢視日志的3種方法

Linux 中實時檢視日志的3種方法

我們大家應該都知道如何在 Linux 中檢視檔案,比如可以使用 cat 或者 less 指令。

這對于檢視靜态檔案來說是可以的。日志檔案是動态的,其内容随時會變化,要監測日志檔案,需要在日志檔案内容改變時也能實時看到。

那麼如何實時檢視日志檔案呢?tail 指令是可以的,除此以外,還有其他的一些工具,本文将會介紹這些可以實時檢視日志檔案的工具。

1. 使用 tail 指令檢視日志檔案

tail 指令使用非常廣泛,是以系統管理者經常使用口頭禅 tail the log file(即:tail 日志檔案)。

大多數情況下,tail 指令用于檢視檔案末尾的内容,是以才會被命名為 tail。

使用 -f 選項可以跟蹤檔案末尾的内容,這表示它會持續顯示被新添加到檔案中的内容。

tail -f location_of_log_file
           
Linux 中實時檢視日志的3種方法

要停止跟蹤日志檔案,可以使用 ctrl +c 快捷鍵。

tail 和 grep

如上所述,tail 指令可以實時檢視檔案内容的變化。但是,當檔案内容更新特别快速的時候,剛剛更新的内容一閃而過,這種情況下,檢視起來就不那麼友善了。

比如,我們在跟蹤日志檔案的時候,經常會監視某個特定的術語(字元串),在快速更新的大量内容中跟蹤,非常不友善。

為了解決這個問題,我們可以将 tail 和 grep 指令結合起來使用。如下所示:

tail -f log_file | grep search_term
           
Linux 中實時檢視日志的3種方法

這樣看起來就好多了,對吧?在這個基礎上,我們再來做一下改進。

使用 grep 展示搜尋詞,顯示的資訊比較有限,它隻顯示檢索結果,是以我們經常使用 -C 選項來顯示檢索結果的前後幾行:

tail -f log_file | grep -C 3 search_term
           

這樣,我們就能看到檢索結果相關的前後幾行資訊,可以更好的跟蹤日志資訊。

還想再改進一些嗎?可以對多個搜尋項使用 grep,然後不區分大小寫:

tail -f log_file | grep -C 3 -i - E 'search_term_1|search_term_2'
           

使用日志輪轉(log rotation)跟蹤日志

大多數企業伺服器,日志都會輪轉(rotation),即當日志檔案達到一定大小後,就會重命名并壓縮。

Linux 中實時檢視日志的3種方法

如果實時跟蹤日志檔案,則會産生問題。預設情況下,tail 指令用于檔案描述符。如果目前日志檔案被旋轉,tail 指令現在将指向一個存檔日志檔案,該檔案現在不會記錄任何更改。

解決方案是按照日志檔案的名稱跟蹤日志檔案。這樣,即使發生日志旋轉,尾部也将指向目前日志檔案(因為其名稱從未更改)。

tail --follow=name log_file | grep -C 3 -i - E 'search_term_1|search_term_2'
           

tail 非常适合實時監控日志檔案,但上述方法隻監控一個日志檔案。如果要監控多個日志檔案該怎麼辦呢?請看下一節。

使用 tail 檢視多個日志檔案

在 Linux 系統中工作,可以使用 tail 指令同時監視多個日志檔案,隻需要提供檔案的路徑:

tail -f log_file_1 -f log_file_2
           

上述指令,你将會實時看到日志檔案的更新,并且在前面會帶有檔案名,以區分不同的日志檔案:

Linux 中實時檢視日志的3種方法

除了上述方法,還有另外一種更友善的方式,就是使用一個名為 multitail 的工具。

2. 使用 multitail 同時監視多個日志檔案

顧名思義,multitail 用于同時顯示多個檔案。

既然 tail 可以同時監視多個檔案,那麼 multitail 有什麼特别的地方呢?

multitail 的優點在于,它可以在拆分視圖中顯示檔案,甚至可以在不同的行和列中顯示不同的檔案。

tail 在同一視圖中顯示所有内容,是以有時候很難跟蹤,multitail 通過提供類似 screen 指令的分割視圖來克服了這一困難。

注意,multitail 在大多數Linux系統中沒有被預設安裝,是以在使用前需要先手動安裝。

在 multitail 指令後跟檔案路徑,最好一次不要超過3個,因為超過3個或以上,跟蹤起來就比較困難了。

multitail log_file_1 log_file_2
           

預設情況下,multitail 的工作方式與 tail -f 相同,它顯示最後100行,然後進入實時監視視圖;另外,它按行來拆分視圖。

Linux 中實時檢視日志的3種方法

你可以按 b 鍵打開一個檔案選擇視窗,選擇某個日志檔案檢視,以做進一步分析。

分割視圖使用 -s 選項,後面跟一個數字,即視圖的數量:

multitail -s 2 log_file_1 log_file_2
           
Linux 中實時檢視日志的3種方法

按 q 鍵可退出 multitail 所有的視圖。

multitail 可以做的還有很多,大家感興趣可以檢視一下它的官方文檔,本文就不繼續介紹了。

3. 使用 less 指令實時檢視日志檔案

less 指令多用于讀取文本檔案,也可用于讀取實時被更改的檔案。

選項 +F 可以實時跟蹤檔案的更改:

less +F log_file
           

上述指令會打開日志檔案,并實時顯示正在寫入的更改:

Linux 中實時檢視日志的3種方法

繼續閱讀