使用linux查看日志排除bug是不少開(kāi)發(fā)和測(cè)試人員的必備技能谭溉,為了更好的使用捕仔,所以百度結(jié)合自己經(jīng)驗(yàn)總結(jié)一下常用的日志查看部分相關(guān)命令匕积。大家可以隨時(shí)更新提出質(zhì)疑一同進(jìn)步盈罐。
一、常用命令
tail head cat tac less more
-
tail:
n 是顯示行號(hào)相當(dāng)于nl命令 tail -100f test.log 實(shí)時(shí)監(jiān)控100行日志 tail -n 10 test.log 查詢(xún)?nèi)罩疚膊孔詈?0行的日志; tail -n +10 test.log 查詢(xún)10行之后的所有日志;
-
head
跟tail是相反的head是看前多少行日志 head -n 10 test.log 查詢(xún)?nèi)罩疚募械念^10行日志; head -n -10 test.log 查詢(xún)?nèi)罩疚募俗詈?0行的其他所有日志;
-
cat
tac是倒序查看是cat單詞反寫(xiě) cat -n test.log |grep "debug" 查詢(xún)關(guān)鍵字的日志
-
more
是將文件從第一行開(kāi)始闪唆,根據(jù)輸出窗口的大小盅粪,適當(dāng)?shù)妮敵鑫募?nèi)容。當(dāng)一頁(yè)無(wú)法全部輸出時(shí)悄蕾,可以用“回車(chē)鍵”向下翻行票顾,用“空格鍵”向下翻頁(yè)。退出查看頁(yè)面帆调,請(qǐng)按“q”鍵奠骄。另外,more還可以配合管道符“|”(pipe)使用番刊,例如:ls -al | more more的語(yǔ)法:more 文件名 Enter 向下n行含鳞,需要定義,默認(rèn)為1行 Ctrl f 向下滾動(dòng)一屏 空格鍵 向下滾動(dòng)一屏 Ctrl b 返回上一屏 = 輸出當(dāng)前行的行號(hào) :f 輸出文件名和當(dāng)前行的行號(hào) v 調(diào)用vi編輯器 ! 命令 調(diào)用Shell芹务,并執(zhí)行命令 q 退出more
-
less
less與more類(lèi)似蝉绷,使用less可以隨意瀏覽文件,而more僅能向前移動(dòng)枣抱,不能向后移動(dòng)熔吗,而且 less 在查看之前不會(huì)加載整個(gè)文件。 less log2013.log 查看文件 ps -ef | less ps查看進(jìn)程信息并通過(guò)less分頁(yè)顯示 history | less 查看命令歷史使用記錄并通過(guò)less分頁(yè)顯示 less log2013.log log2014.log 瀏覽多個(gè)文件 常用命令參數(shù): -b <緩沖區(qū)大小> 設(shè)置緩沖區(qū)的大小 -g 只標(biāo)志最后搜索的關(guān)鍵詞 -i 忽略搜索時(shí)的大小寫(xiě) -m 顯示類(lèi)似more命令的百分比 -N 顯示每行的行號(hào) -o <文件名> 將less 輸出的內(nèi)容在指定文件中保存起來(lái) -Q 不使用警告音 -s 顯示連續(xù)空行為一行 /字符串:向下搜索"字符串"的功能 ?字符串:向上搜索"字符串"的功能 n:重復(fù)前一個(gè)搜索(與 / 或 ? 有關(guān)) N:反向重復(fù)前一個(gè)搜索(與 / 或 ? 有關(guān)) b 向后翻一頁(yè) h 顯示幫助界面 q 退出less 命令
在 less 查看日志文件時(shí): 一般流程是: cd /opt/logs export LANG=zh_cn.utf-8 有時(shí)候使用less命令會(huì)發(fā)現(xiàn)亂碼時(shí)使用 locale可查看當(dāng)前設(shè)置 less -mns newecc-all.log-2018-05-28 顯示行號(hào)百分比和空行會(huì)比較直觀 按g到 第一行 shift + g 跳轉(zhuǎn)到最后一頁(yè) 沃但? 和 / 后面加檢索內(nèi)容都可以進(jìn)行當(dāng)前文本關(guān)鍵字的查找 shift+n/n 分別是向下/上查詢(xún)此關(guān) 鍵字內(nèi)容
二磁滚、常用場(chǎng)景
- 按行號(hào)查看---過(guò)濾出關(guān)鍵字附近的日志
1. 得到關(guān)鍵日志的行號(hào)
cat -n test.log |grep "debug"
2. 選擇關(guān)鍵字所在的中間一行. 然后查看這個(gè)關(guān)鍵行數(shù)前后范圍日志:
cat -n test.log |tail -n +92|head -n 20
---tail -n +92表示查詢(xún)92行之后的日志
---head -n 20 則表示在前面的查詢(xún)結(jié)果里再查前20條記錄
- 根據(jù)日期查詢(xún)?nèi)罩?/li>
sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
---上面的兩個(gè)日期必須是日志中打印出來(lái)的日志,否則無(wú)效;
---先 grep '2014-12-17 16:17:20' test.log 來(lái)確定日志中是否有該 時(shí)間點(diǎn)
- 日志內(nèi)容特別多宵晚,打印在屏幕上不方便查看
1. 使用more和less命令
cat -n test.log |grep "debug" |more
---這樣就分頁(yè)打印了,通過(guò)點(diǎn)擊空格鍵翻頁(yè)
2.使用 >xxx.txt 將其保存到文件中,到時(shí)可以拉下這個(gè)文件分析
cat -n test.log |grep "debug" >debug.txt