使用指令碼命令監控站點日誌

2021-09-07 06:12:43 字數 2035 閱讀 6050

以下的內容是使用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.如果檔案不存在則建立檔案 ...