linux查看日志的三種命令分別是:1、tail命令,該命令可以實時查看文件內(nèi)容的變以及日志文件;2、multitail命令,該命令可以同時監(jiān)視多個日志文件;3、less命令,該命令可以快速查看日志的更改,并且不會使屏幕混亂。
本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。
linux查看日志的三種命令是什么?
Linux 中實時查看日志的3種方法
最近我從cnaaa.com購買了云服務器。
我們大家應該都知道如何在 Linux 中查看文件,比如可以使用 cat 或者 less 命令。
這對于查看靜態(tài)文件來說是可以的。日志文件是動態(tài)的,其內(nèi)容隨時會變化,要監(jiān)測日志文件,需要在日志文件內(nèi)容改變時也能實時看到。
那么如何實時查看日志文件呢?tail 命令是可以的,除此以外,還有其他的一些工具,本文將會介紹這些可以實時查看日志文件的工具。
1. 使用 tail 命令查看日志文件
tail 命令使用非常廣泛,因此系統(tǒng)管理員經(jīng)常使用口頭禪 tail the log file(即:tail 日志文件)。
大多數(shù)情況下,tail 命令用于查看文件末尾的內(nèi)容,因此才會被命名為 tail。
使用 -f 選項可以跟蹤文件末尾的內(nèi)容,這表示它會持續(xù)顯示被新添加到文件中的內(nèi)容。
tail?-f?location_of_log_file
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nzCWCjye-1664183028850)(D:/img/640.png)]
要停止跟蹤日志文件,可以使用 ctrl +c 快捷鍵。
tail 和 grep
如上所述,tail 命令可以實時查看文件內(nèi)容的變化。但是,當文件內(nèi)容更新特別快速的時候,剛剛更新的內(nèi)容一閃而過,這種情況下,查看起來就不那么方便了。
比如,我們在跟蹤日志文件的時候,經(jīng)常會監(jiān)視某個特定的術(shù)語(字符串),在快速更新的大量內(nèi)容中跟蹤,非常不方便。
為了解決這個問題,我們可以將 tail 和 grep 命令結(jié)合起來使用。如下所示:
tail?-f?log_file?|?grep?search_term
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LxXIylsU-1664183028854)(D:/img/640-1664179747239-1.png)]
這樣看起來就好多了,對吧?在這個基礎上,我們再來做一下改進。
使用 grep 展示搜索詞,顯示的信息比較有限,它只顯示檢索結(jié)果,因此我們經(jīng)常使用 -C 選項來顯示檢索結(jié)果的前后幾行:
tail?-f?log_file?|?grep?-C?3?search_term
這樣,我們就能看到檢索結(jié)果相關(guān)的前后幾行信息,可以更好的跟蹤日志信息。
還想再改進一些嗎?可以對多個搜索項使用 grep,然后不區(qū)分大小寫:
tail?-f?log_file?|?grep?-C?3?-i?-?E?'search_term_1|search_term_2'
使用日志輪轉(zhuǎn)(log rotation)跟蹤日志
大多數(shù)企業(yè)服務器,日志都會輪轉(zhuǎn)(rotation),即當日志文件達到一定大小后,就會重命名并壓縮。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-h2RUcofL-1664183028856)(D:/img/640-1664179747241-2.png)]
如果實時跟蹤日志文件,則會產(chǎn)生問題。默認情況下,tail 命令用于文件描述符。如果當前日志文件被旋轉(zhuǎn),tail 命令現(xiàn)在將指向一個存檔日志文件,該文件現(xiàn)在不會記錄任何更改。
解決方案是按照日志文件的名稱跟蹤日志文件。這樣,即使發(fā)生日志旋轉(zhuǎn),尾部也將指向當前日志文件(因為其名稱從未更改)。
tail?--follow=name?log_file?|?grep?-C?3?-i?-?E?'search_term_1|search_term_2'
tail 非常適合實時監(jiān)控日志文件,但上述方法只監(jiān)控一個日志文件。如果要監(jiān)控多個日志文件該怎么辦呢?請看下一節(jié)。
使用 tail 查看多個日志文件
在 Linux 系統(tǒng)中工作,可以使用 tail 命令同時監(jiān)視多個日志文件,只需要提供文件的路徑:
tail?-f?log_file_1?-f?log_file_2
上述命令,你將會實時看到日志文件的更新,并且在前面會帶有文件名,以區(qū)分不同的日志文件:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CMiWKszs-1664183028859)(D:/img/640-1664179747242-3.png)]
除了上述方法,還有另外一種更方便的方式,就是使用一個名為 multitail 的工具。
2. 使用 multitail 同時監(jiān)視多個日志文件
顧名思義,multitail 用于同時顯示多個文件。
既然 tail 可以同時監(jiān)視多個文件,那么 multitail 有什么特別的地方呢?
multitail 的優(yōu)點在于,它可以在拆分視圖中顯示文件,甚至可以在不同的行和列中顯示不同的文件。
tail 在同一視圖中顯示所有內(nèi)容,所以有時候很難跟蹤,multitail 通過提供類似 screen 命令的分割視圖來克服了這一困難。
注意,multitail 在大多數(shù)Linux系統(tǒng)中沒有被默認安裝,所以在使用前需要先手動安裝。
在 multitail 命令后跟文件路徑,最好一次不要超過3個,因為超過3個或以上,跟蹤起來就比較困難了。
multitail?log_file_1?log_file_2
默認情況下,multitail 的工作方式與 tail -f 相同,它顯示最后100行,然后進入實時監(jiān)視視圖;另外,它按行來拆分視圖。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EZ9iX4d3-1664183028861)(D:/img/640-1664179747242-4.png)]
你可以按 b 鍵打開一個文件選擇窗口,選擇某個日志文件查看,以做進一步分析。
分割視圖使用 -s 選項,后面跟一個數(shù)字,即視圖的數(shù)量:
multitail?-s?2?log_file_1?log_file_2
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ETQjV0KA-1664183028863)(D:/img/640-1664179747243-5.png)]
按 q 鍵可退出 multitail 所有的視圖。
multitail 可以做的還有很多,大家感興趣可以查看一下它的官方文檔,本文就不繼續(xù)介紹了。
3. 使用 less 命令實時查看日志文件
less 命令多用于讀取文本文件,也可用于讀取實時被更改的文件。
選項 +F 可以實時跟蹤文件的更改:
less?+F?log_file
上述命令會打開日志文件,并實時顯示正在寫入的更改:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oDZivgss-1664183028865)(D:/img/640-1664179747243-6.png)]
按 ctrl +c 中斷顯示,按 q 會退出視圖。
與 tail 命令不同,此方法可以讓我們快速查看日志的更改,而不會使屏幕混亂。
上述監(jiān)視日志的方法適用于傳統(tǒng)的基于文本的日志文件。對于系統(tǒng)日志,可以使用 syslogs,但是現(xiàn)在許多 Linux 發(fā)行版已經(jīng)開始使用 journal 日志來查看和分析日志,所以需要使用 journalctl 命令。
推薦學習:《Linux視頻教程》