以下的內容是使用linux/unix作為站點的朋友一定要懂的方法。儘管有n多中工具用於分析比如apache、nginx的訪問日誌。可是。不論什麼一種都沒有linux內建命令來的高效、靈活。比如:當你的圖形化系統不起作用的時候(黑客攻擊?!),手裡掌握一些監控、分析日誌的指令碼顯的尤為重要!以下的**能夠監控近期的訪客日誌,相當實用。
一、實時過濾日誌
使用 tail -f 命令能夠檢視日誌檔案近期新增的部分。只是,實際應用中會存在一些麻煩。你會發現輸出了一大堆內容佔滿了整個螢幕。有必要格式化一下這些內容^_^。指令碼例如以下:
#須要將指令碼儲存起來, $columns 變數才會有效
#注意: -n10 表示顯示最後10行內容,能夠自己改動
deny="`tput bold; tput setaf 1`" #亮紅
high="`tput bold; tput setaf 3`" #亮黃
norm="`tput sgr0`"
tail "$@" -s.1 -f access_log |
grep -ev --line-buffered -f agents_to_ignore -f files_to_ignore |
sed -u "s/\(.*\) - \[[^]]*\]\(.*\)/\1\2/" | #過濾掉一些字段
#分析google蜘蛛訪問
#過濾不須要的內容
sed -u "s/^/ /; s/^ *\([ 0-9.]\\) -/\1/" | #對齊ip位址
sed -u "s/\(.\\).*/\1/" | #保證輸出行寬度統一
#高亮顯示 referrer行
sed -u "
s/\([^\"]*\"[^\"]*\" 40[34] [0-9]* \"\)\([^\"]*\)\(\".*\)/\1$deny\2$norm\3/;t;
s/\([^\"]*\"[^\"]*\" [0-9 -]* \"\)\([^\"]*\)\(\".*\)/\1$high\2$norm\3/;t;
"儲存為 tail_access_log 指令碼取代tail命令。
二、最近日誌高效監控指令碼
假設站點流量非常大的話。日誌檔案是相當龐大的。
分析這些日誌的時候就須要小心處理了,比如:筆者的訪問日誌已經有700多mb了,一次性讀取的化會相當的慢。通常我們使用 tac 命令讀取檔案最後一部分內容,sed 命令用於結束讀取。
指令碼例如以下:
#!/bin/sh
# 返回近期n天內 "ncsa" 格式的 http 日誌
days=$1
log="$2"
export lang=c #加速
export tz=utc0
last_log_date=`tail -1 "$log" |
sed 's#.*\[\([^:]*\):\([^ ]*\) .*#\1 \2#g' |
tr '/' ' '`
yesterday=`date --date="$last_log_date $days day ago" +"%d/%b/%y:%h:%m"`
#間隔週期10分鐘
yesterday=`echo $yesterday | cut -b-16`
yesterday="$yesterday[0-9]"
tac "$log" | sed "\#$yesterday#q"
相同將指令碼儲存為get_last_days [天數] [檔名稱]。就可以使用。
講了這個這麼多以下來段例項。一般。我們可能會感興趣會有哪些使用者訂閱了我們的rss種子。已經採用何種方式訂閱的。skyfeed、google等等。
window指令碼命令以及使用
在執行bat命令前 要在c users 72057396 使用者目錄下執行就是說關閉回顯 echo off並不是dos程式中的,而是dos批處理中的。當年的dos,所有操作都用鍵盤命令來完成,當你每次都要輸入相同的命令時,可以把這麼多命令存為乙個批處理,從此以後,只要執行這個批處理,就相當於打了幾行...
shell指令碼 命令
命令連線符 表示不管前面是否執行成功都要執行 表示前面執行成功才執行後面 表示前面執行失敗才執行後面 read命令 read 選項 值 read p 提示語句 n 字元個數 t 時間秒 s 不顯示 運算子 expr 3 2 結果賦值 sum expr 3 2 或者 sum 3 2 乘法expr 3 ...
shell指令碼命令
1.建立檔案 home test test.log rootdir home test testfile rootdir test.log touch testfile 2.如果檔案存在則刪除檔案 if f testfile then rm rf testfile fi3.如果檔案不存在則建立檔案 ...