1. 程式人生 > >【Linux】日誌查詢

【Linux】日誌查詢

Linux環境日誌查詢相關——

1.預熱——查詢命令

find
a.在根目錄,查詢檔案指定檔案:find / -name a.txt
b.在根目錄,模糊查詢.txt字尾的檔案:find / -name “*.txt”
grep
a.從檔案中查詢與正則表示式匹配的行:grep -e “正則表示式” 檔名
b.從檔案中查詢不區分大小寫:grep -i “被查詢的字串” 檔名
c.從檔案中查詢匹配的行數:grep -c “被查詢的字串” 檔名
d.從檔案中查詢不匹配指定字串的行:grep -v “被查詢的字串” 檔名
eg1.從根目錄開始查詢所有副檔名為.log的文字檔案,並找出包含”ERROR”的行?
find / -type f -name “*.log” | grep -c “ERROR”


eg2.從當前目錄開始查詢所有副檔名為.in的文字檔案,並找出包含”thermcontact”的行?
find . -name “*.in” | grep -i “thremcontact”

2.日誌查詢技巧

基本命令:

tail
tail -n 10/-10 a.log 查詢檔案尾部最後10行的日誌;
tail -n +10 a.log 查詢檔案第10行開始以後的所有日誌(10行之後的所以日誌);
head
head -n 10/+10 a.log 查詢檔案的頭10行日誌;
head -n -10 a.log 查詢檔案尾部10行以前的所以日誌(除了最後10行的所以日誌);

例項說明:

場景1:

按行號檢視:過濾出關鍵字附近的日誌
因為通常時候我們用grep拿到的日誌很少,我們需要檢視附近的日誌.
我是這樣做的,

<1>首先: cat -n test.log |grep “地形” 得到關鍵日誌的行號
<2>得到”地形”關鍵字所在的行號是102行. 此時如果我想檢視這個關鍵字前10行和後10行的日誌:
cat -n test.log |tail -n +92|head -n 20
tail -n +92表示查詢92行之後的日誌
head -n 20 則表示在前面的查詢結果裡再查前20條記錄

場景2:

那麼按日期怎麼查呢? 通常我們非常需要查詢指定時間端的日誌

sed -n ‘/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p’ test.log

特別說明:上面的兩個日期必須是日誌中打印出來的日誌,否則無效.
關於日期列印,可以先 grep ‘2014-12-17 16:17:20’ test.log 來確定日誌中是否有該時間點,以確保可以拿到日誌
這個根據時間段查詢日誌是非常有用的命令.

3.顯示命令

如果我們查詢的日誌很多,列印在螢幕上不方便檢視, 有兩個方法:

(1)使用more和less命令, 如: cat -n test.log |grep “地形” |more 這樣就分頁列印了,通過點選空格鍵翻頁
(2)使用 >xxx.txt 將其儲存到檔案中,到時可以拉下這個檔案分析.如:

cat -n test.log |grep “地形” >xxx.txt

這幾個日誌檢視方法應該可以滿足日常需求了.

參考:
參考1
參考2
參考3

—-狐松鼠 17.3.10—————