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按線程查看

查看CPU使用率

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編輯器

 

操作

命令

說明

文本替換

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程序

操作

命令

篩選行,打印指定列

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==404print$6access.log|wclexpr6==′404′print$6′access.log|wc−l‘占比exprnot_found_line \* 100 / $total_line &&或;可合並為一行。

(7)使用grep查找文件中指定字符出現的次數

grep -o '目標' test.txt | wc -l
-o 指示grep顯示所有匹配的地方,並且每一個匹配單獨一行輸出。這樣只要統計輸出的行數就可以知道這個字符出現的次數了。

 

 

http://www.cnblogs.com/binyue/p/3608061.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM