>>基礎命令
操作 |
命令 |
說明 |
查看文件的內容 |
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==′404′print$6′access.log|wc−l‘占比expr6==′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