日常工作需要用到,shell語(yǔ)句用于分析定位生產(chǎn)問(wèn)題,本次做個(gè)記錄
# 將日志先拷貝到當(dāng)前目錄
cp /tmp/Nginx.log .
本次目標(biāo)是: 找出log中的404 500的報(bào)錯(cuò)
#使用管道取出相關(guān)日志
less nginx.log
通過(guò)/ 查詢(xún)得知 狀態(tài)碼處于第9個(gè)字段
#使用 awk 篩選出第九個(gè)字段的全部?jī)?nèi)容
less nginx.log | awk '{print $9}'
對(duì)應(yīng)結(jié)果集太多
# 使用sort排序 uniq -c 去重 統(tǒng)計(jì)
less nginx.log | awk '{print $9}'| sort | uniq -c
總有以上幾種狀態(tài)碼,需要再次篩選
#使用 ~正則 匹配日志400和500狀態(tài)相關(guān)的 $0打印所有行信息
less nginx.log | awk '$9~/500|404/{print $0}'
找出500錯(cuò)誤時(shí)候的上下文,找出500錯(cuò)誤的前兩行 考察grep高級(jí)用法
可以使用grep -b
- -b 或 --byte-offset : 在顯示符合樣式的那一行之前,標(biāo)示出該行第一個(gè)字符的編號(hào)。
- -B<顯示行數(shù)> 或 --before-context=<顯示行數(shù)> : 除了顯示符合樣式的那一行之外,并顯示該行之前的內(nèi)容。
grep -B 2 '500' nginx.log
統(tǒng)計(jì)前十的ip,分別打印ip和出現(xiàn)次數(shù)
首先查詢(xún)到日志:cat nginx.log
通過(guò)日志分析的得知ip處于日志中第一個(gè)字段位置
#利用管道符,拼接awk分割,打印出的ip信息
cat nginx.log|awk {print $1}
管道符拼接
然后使用sort對(duì)結(jié)果進(jìn)行排序
使用uniq -c 去統(tǒng)計(jì)次數(shù)
- -c或--count 在每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù)。
使用sort -nr 檢查排序(以前十倒序排序)
- -n 依照數(shù)值的大小排序
- -r 以相反的順序來(lái)排序
使用head -n 10 篩選數(shù)據(jù)只有 十行






