天天看點

Linux常用的日志分析指令與工具

操作

指令

說明

檢視檔案的内容

cat -n access.log

-n顯示行号

分頁顯示檔案

more access.log

enter下一行,空格下一頁,f下一屏,b上一屏

less access.log

輸入 /字元串 可查找并高亮

顯示檔案尾

tail -n2 -f access.log

-n2顯示最後2行,-f繼續監聽不退出

内容排序

sort -k 2 -t ' ' -n access.log

-k指定排序列,-t指定列分隔符,-n按數字順序

字元統計

wc -l access.log

-l統計行數,-c字元數,-l最長行長度,-w單詞數

檢視重複出現的行

sort testfile | uniq -c -d

uniq去重,-c統計重複次數,-d隻顯示重複的

字元串查找

grep 'g.*t' access.log

查找g開頭t結尾的字元串

檔案查找

find /home/java -name access.log

遞歸/home/java的子目錄找名為access.log

表達式求值

expr 10 \* 3

計算10*3,其中\*表示轉義*不解讀為通配符

expr length "this is a test"

計算長度

歸檔檔案

tar -cf aaa.tar f1 f2

-c建立,-f指定包名

tar -xf aaa.tar

-x解壓

url通路

curl www.google.com

不帶參傳回響應體,-i傳回帶響應頭,-i僅傳回響應頭

檢視cpu的load

uptime

檢視cpu使用率

top | grep cpu

按1檢視每個核,按shift+h按線程檢視

top -p 2864

檢視指定程序

磁盤剩餘空間

df -h

du -d 1 -h /home/java

分析目錄的磁盤使用。-d設定遞歸深度

網絡traffic

sar -n dev 1 1

dev檢視各個網卡,1秒抽樣,1總共取一次

磁盤i/o

iostat -d -k

記憶體使用

free -m

通常是看“-/+ buffers/cache”對應的used和free

vmstat

檢視swap i/o

文本替換

sed 's/xxx/yahoo/' access.log | head -10

不會修改原檔案

輸出指定的行

sed -n '2,6p' access.log

輸出2-6行

删除行

sed '/qq/d' access.log

/d排除含關鍵字qq的行

整行替換

sed -e '/google/c\hello' access.log | head -10

/c替換的是整個比對的行

多個指令合并

sed -n '1,5p;1,5=' access.log

邊列印行邊列印行号

篩選行,列印指定列

awk '/google/{print 0,0,6}' access.log | head -10

按條件列印

awk 'length(0)>40{print0)>40{print3}' access.log | head -10

格式化輸出

awk '{line= sprintf("method:%s,response:%s", 3,3,7); print line}' access.log | head -10

(1)統計一個文本中包含字元個數

cat access.log |grep /2012/ |wc -l

cat access.log |grep "/message/publishmsg/\|/message/publish/" >test1.log 

(2)檢視當天通路排行前10的url

cat access.log | grep “10/dec/2010″ | awk ‘{print $7}’ | sort | uniq -c | sort -nr | head -n 10

(3)檢視apache的程序數

ps -aux | grep httpd | wc -l

(4)通路量前10的ip

cat access.log | cut -f1 -d " " | sort | uniq -c |sort -k 1 -n -r | head -10

cut部分表示取第1列即ip列,取第4列則為url的通路量

(5)檢視最耗時的頁面

cat access.log | sort -k 2 -n -r | head -10

按第2列響應時間逆序排序

(6)統計404請求的占比

總請求數 export total_line= `wc -l access.log | cut -f1 -d " "`

404請求數 export not_found_line= `awk '6==′404′print$6′access.log|wc−l‘占比expr6==′404′print$6′access.log|wc−l‘占比exprnot_found_line \* 100 / $total_line &&或;可合并為一行。

繼續閱讀