Linux檢視打日誌檔案

2022-06-30 05:18:09 字數 3951 閱讀 5524

1.如果檔案比較小的話,使用vim直接檢視,如果檔案比較大的話,使用vim會直接卡主

2.如果想要檢視正在滾動的日誌檔案.這個命令可以檢視大檔案.

tail -f file
ctrl+c 終止tail命令

ctrl+s 暫停tail命令

ctrl+q繼續tail命令

3.如果檔案比較大的話,也可以使用less命令

less file
但是使用上述命令的壞處是,預設開啟的位置是第一行,並且當切換到實時滾動模式(按f,實現效果類似於tail -f 效果)過著想要滾動到最底部的時候(按g)會卡在計算行一段時間,如果卡的時間比較長的話,可以直接按ctrl+c,取消計算行數.

我更推薦開啟檔案的時候使用 -n,不計算行號(開啟大檔案的時候,很有用.)

less  -n file 

less +g -n file //

開啟檔案的時候,直接定位到檔案的最底部,預設情況下是在首行。

less +f -n file //

開啟檔案的時候,使用實時滾動模式,ctrl + c 退出實時滾動模式,按 f 切回實時滾動模式

less +1000g -n file //

直接定位到第 1000 行,一般你提前通過 grep 命令,定位到行數後,再使用這個命令

less +50p -n file //

直接定位到 50% 的位置

less +50p -n file //

直接定位到第 100 位元組的位置。這個命令感覺不怎麼使用。

不使用 -n 的壞處是:當你使用 = 的時候,會計算出當前游標所在的位置,但是務必記得,大檔案計算行數會阻塞一段時間。例如執行下列命令

less copy.log
然後按下 = ,顯示結果如下圖:

less 命令開啟檔案後,按下 = ,因為檔案比較大,卡了我 20 幾秒。

顯示內容為: 檔名 copy.log , 當前螢幕顯示1-24行/該檔案一共有430000070行 , 從第一行到當前位置一共有 144 byte/該檔案一共有2580000418 byte , 當前位置在檔案的 0% 處。

如果使用 -n,輸入以下命令 :

less -n copy.log
然後按下 = ,執行就非常快了

當然如果檔案比較小,你想在使用 less 開啟檔案,並顯示檔案行數的話,可以使用 :

less -n file
4.如果你已經知道日誌輸出的關鍵字的話,使用grep,通常需要列印關鍵字的前後的日誌

grep 'key word' log.txt -a 20 //

列出包括匹配行之後 20 的行。

grep 'key word' log.txt -b 20 //

列出包括匹配行之前 20 的行。

grep 'key word' log.txt -c 20 //

列出包括匹配行前後各 20 行。

大檔案的話,grep 出來的資料比較多的話,你可以和 less 一起使用

grep  `world` copy.log | less
5.有時候需要將 tail 和 less 命令結合起來使用

tail -n +10000 | less //

從第 10000 開始,使用 less 檢視。

tail -n 10000 | less //

檢視倒數第 1000 行到檔案最後的資料。

6.切割檔案

有時候想把乙個大檔案進行分割成多個小檔案.(我個人是不建議這麼做的,因為我發現 split 的時候,也是蠻耗時的,但是這裡仍然提供一種解決方法吧)

按檔案大小分割:

split -b 600m copy.log
分割後的檔案預設是以 x 開頭,例如我上述命令分割後檔案為:

$ ls -lht x*  //

這裡 * 是萬用字元,即列出以 x 開頭的檔案。

當然你可以按行數分割,具體的命令格式如下 :

命令引數

說明-a, --suffix-length=n

使用長度為 n 的字尾 (預設 2)

-b, --bytes=size

設定輸出檔案的大小。支援單位:m,k

-c, --line-bytes=size

設定輸出檔案的最大行數。與 -b 類似,但會盡量維持每行的完整性

-d, --numeric-suffixes

使用數字字尾代替字母

-l, --lines=number

裝置輸出檔案的行數

–help

顯示版本資訊

–version

輸出版本資訊

7.如果你已經知道需要的內容在第幾行,但是想要顯示指定行數之前或者之後的行。例如你想顯示 499999900 到 500000000 這100 行的內容。推薦使用這個方法

head -500000000 file | tail -100

其中 head -500000000 : 顯示檔案的前 500000000 行。

tail -100 :顯示最後 100行。

兩者結合起來就是在前 500000000 行中顯示後 100 行,即顯示 499999900 到 500000000 這100 行的內容。或者使用 sed 命令:

sed -n '500000000q;499999900,500000000p'  file
其中 -n 與 p : 表示只列印符合條件的行。

500000000q; : 表示當執行到第 500000000 行的時候停止執行。 如果不使用 500000000q; sed 缺省會瀏覽整個檔案。

499999900,500000000 : 表示499999900 到 500000000 行。其中 , 逗號表示範圍。

整體結合起來就是列印 499999900 到 500000000 行,但是執行到第 500000000 行就不要再執行了。

或者使用 awk 命令

awk 'nr>=49999991 && nr<=50000000 nr==50000001' file
最後我發現三者的執行效率(copy.log 是乙個大小為 2.5 g 的測試檔案):

time (head -500000000  copy.log  | tail -100) > /dev/null

real 0m9.456s

user 0m8.854s

sys 0m3.501s

time (sed -n '500000000q;499999900,500000000p' copy.log) > /dev/null

real 0m25.968s

user 0m25.111s

sys 0m0.833s

time (awk 'nr>=499999900&& nr<=500000000 nr==500000001' copy.log) > /dev/null

real 1m4.743s

user 1m3.824s

sys 0m0.906s

總結與其說是檢視大日誌檔案的方法,不如說是將 grep/awk/sed/head/less/tail 多個命令結合起來的方法。

其實最重要的不是怎麼看大檔案,還是在程式執行時候,就要對日誌檔案進行歸檔整理,例如,每天一次歸檔,或者每滿 500m 就歸檔。

當然大公司會用例如 elk 之類的日誌處理系統。

如果你在瀏覽這篇文章的時候,苦於沒有大的日誌檔案練習, 可以執行如下命令:

seq 1 1000000000 > file

linux 檢視日誌檔案

linux日誌檔案在 var log目錄下,可以通過命令檢視日誌檔案。1,cat messages可以檢視某個日誌檔案。2,要達到實時更新,可以通過tail命令檢視更新的資料,例如tail f messages。3,tail命令引數 f 迴圈讀取 q 不顯示處理資訊 v 顯示詳細的處理資訊 c 數目...

linux 日誌檔案檢視

記錄下日誌中常用的日誌檢視命令。1.tail n 10 f log 顯示日誌檔案尾部10行日誌,當有新日誌產生,會追加顯示。2.tail 命令 現ff.sh中有如下資訊 root hxjk test backend services test cat ff.sh12 3456 78910 1112 ...

linux 日誌檔案檢視

記錄下日誌中常用的日誌檢視命令。1.tail n 10 f log 顯示日誌檔案尾部10行日誌,當有新日誌產生,會追加顯示。2.tail 命令 現ff.sh中有如下資訊 root hxjk test backend services test cat ff.sh12 3456 78910 1112 ...