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