操作
指令
說明
檢視檔案的内容
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 &&或;可合并為一行。