1.查看日志可能使用到的命令介紹
tail
從尾部輸出日志招刹,-n 是顯示行號;相當(dāng)于nl命令荐虐;例子如下:
tail -100f test.log 實時監(jiān)控100行日志
tail -n 10 test.log 查詢?nèi)罩疚膊孔詈?0行的日志
tail -n +10 test.log 查詢10行之后的所有日志
head
跟tail是相反的禽额,head是看頭部多少行日志:
head -n 10 test.log 查詢?nèi)罩疚募械念^10行日志
head -n -10 test.log 查詢?nèi)罩疚募俗詈?0行的其他所有日志
cat
cat命令主要用來查看文件內(nèi)容克伊,創(chuàng)建文件捏浊,文件合并懂衩,追加文件內(nèi)容等功能
cat f1.txt,查看f1.txt文件的內(nèi)容
cat -n f1.txt金踪,查看f1.txt文件的內(nèi)容浊洞,并且由1開始對所有輸出行進(jìn)行編號
cat -b f1.txt,查看f1.txt文件的內(nèi)容胡岔,用法與-n相似法希,只不過對于空白行不編號
cat f1.txt f2.txt,同時顯示f1.txt和f2.txt文件內(nèi)容靶瘸,注意文件名之間以空格分隔苫亦,而不是逗號
cat -n f1.txt>f2.txt,對f1.txt文件中每一行加上行號后然后寫入到f2.txt中怨咪,會覆蓋原來的內(nèi)容著觉,文件不存在則創(chuàng)建它
cat -n f1.txt>>f2.txt,對f1.txt文件中每一行加上行號后然后追加到f2.txt中去惊暴,不會覆蓋原來的內(nèi)容,文件不存在則創(chuàng)建它
grep
文件搜索查找命令趁桃,可使用正則辽话、統(tǒng)計搜索到的次數(shù)、高亮展示搜索到的關(guān)鍵字等功能
參數(shù) | 描述 |
---|---|
-e | 使用正則搜索 |
-i | 不區(qū)分大小寫 |
-v | 查找不包含指定內(nèi)容的行 |
-w | 按單詞搜索 |
-c | 統(tǒng)計匹配到的次數(shù) |
-n | 顯示行號 |
-r | 逐層遍歷目錄查找 |
-A | 顯示匹配行及后面多少行, 如: -A3, 則表示顯示匹配行及后3行 |
-B | 顯示匹配行及前面多少行, 如: -B3, 則表示顯示匹配行及前3行 |
-C | 顯示匹配行前后多少行, 如: -C3, 則表示顯示批量行前后3行 |
--color | 匹配到的內(nèi)容高亮顯示 |
--include | 指定匹配的文件類型 |
--exclude | 過濾不需要匹配的文件類型 |
#多文件查詢
grep leo logs.log logs_back.log
#查找即包含leo又包含li的行
grep leo logs.log | grep li
#查找匹配leo或者匹配li的行
grep leo | li logs.log
#顯示匹配行前2行
grep leo logs.log -A2
#顯示匹配行后2行
grep leo logs.log -B2
#顯示匹配行前后2行
grep leo logs.log -C2
#不區(qū)分大小寫
grep -i leo logs.log
#使用正則表達(dá)式
grep -e '[a-z]\{5\}' logs.log
#查找不包含leo的行
grep -v leo logs.log
#統(tǒng)計包含leo的行數(shù)
grep -c leo logs.log
#遍歷當(dāng)前目錄及所有子目錄查找匹配leo的行
grep -r leo .
#在當(dāng)前目錄及所有子目錄查找所有java文件中查找leo
grep -r leo . --include "*.java"
#查找并輸出到指定文件
grep leo logs.log > result.log
#查找以leo開頭的行
grep ^leo logs.log
#查找以leo結(jié)尾的行
grep leo$ logs.log
#查找空行
grep ^$ logs.log
sed
- 工作原理: 先從文件中讀取一行內(nèi)容到模式空間里即sed專屬的緩存空間卫病,然后判斷這行內(nèi)容是否是需要處理的內(nèi)容油啤,如果不是就繼續(xù)從文件中讀取下一行,否則對改行內(nèi)容進(jìn)行相應(yīng)處理后輸出蟀苛,然后繼續(xù)讀取下一行進(jìn)行判斷或處理益咬,直到文件最后一行處理完畢整個過程結(jié)束
- 命令格式:sed 參數(shù) 功能選項 文件名或其他標(biāo)準(zhǔn)輸入
- 參數(shù):
功能 | 描述 |
---|---|
a | 追加內(nèi)容到指定行后 |
i | 插入內(nèi)容到指定行前 |
d | 刪除指定行 |
c | 用新行替換舊行(不常用) |
s | 對每一行第一次匹配到的內(nèi)容進(jìn)行替換,配合標(biāo)志g可以將一行中所有匹配到的內(nèi)容進(jìn)行替換 |
p | 輸出指定內(nèi)容帜平,默認(rèn)會輸出2次匹配到的內(nèi)容 |
使用舉例見場景3
2.應(yīng)用場景一:按行號查看---過濾出關(guān)鍵字附近的日志
cat -n test.log |grep "debug" 得到關(guān)鍵日志的行號
-
cat -n test.log |tail -n +92|head -n 20 選擇關(guān)鍵字所在的中間一行. 然后查看這個關(guān)鍵字前10行和后10行的日志
tail -n +92表示查詢92行之后的日志
head -n 20 則表示在前面的查詢結(jié)果里再查前20條記錄
3.應(yīng)用場景二:根據(jù)日期查詢?nèi)罩?/h4>
? 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 來確定日志中是否有該 時間點
4.應(yīng)用場景三:日志內(nèi)容特別多梅鹦,打印在屏幕上不方便查看
- 使用more和less命令,
? 如: cat -n test.log |grep "debug" |more 這樣就分頁打印了,通過點擊空格鍵翻頁
- 使用 >xxx.txt 將其保存到文件中,到時可以拉下這個文件分析
? 如:cat -n test.log |grep "debug" >debug.txt