linux監(jiān)控日志命令
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/\(.*\) - \[[^]]*\]\(.*\)/ class="main">
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆?,通常我們使?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
/" | #過(guò)濾掉一些字段#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"# class="main">
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆?,通常我們使?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
()" #' |#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/ class="main">
linux監(jiān)控日志命令
linux監(jiān)控日志命令
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆?,通常我們使?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
$norm/;t;s/\([^\"]*\"[^\"]*\" [0-9 -]* \"\)\([^\"]*\)\(\".*\)/ class="main">
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆ǔN覀兪褂?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
$norm/;t;"
保存為 tail_access_log 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆?,通常我們使?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "NCSA" 格式的 HTTP 日志
days= class="main">
linux監(jiān)控日志命令
log="
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆?,通常我們使?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
"export LANG=C #加速
export TZ=UTC0
last_log_date=`tail -1 "$log" |
sed 's#.*\[\([^:]*\):\([^ ]*\) .*# class="main">
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆ǔN覀兪褂?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
#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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/ class="main">
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆ǔN覀兪褂?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
/' |#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/ class="main">
linux監(jiān)控日志命令
linux監(jiān)控日志命令
linux監(jiān)控日志命令
linux監(jiān)控日志命令
linux監(jiān)控日志命令
linux監(jiān)控日志命令
linux監(jiān)控日志命令
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/ class="main">
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆?,通常我們使?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
./' |#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆?,通常我們使?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
class="main">linux監(jiān)控日志命令
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/ class="main">
linux監(jiān)控日志命令
在linux系統(tǒng)下,日志記錄是檢查系統(tǒng)的最好的方法之一。下面由學(xué)習(xí)啦小編為大家整理了linux監(jiān)控日志的相關(guān)命令和方法,希望大家喜歡。
linux監(jiān)控日志命令方法一、實(shí)時(shí)過(guò)濾日志
使用 tail -f 命令可以查看日志文件最近新增的部分。不過(guò),實(shí)際應(yīng)用中會(huì)存在一些麻煩,你會(huì)發(fā)現(xiàn)輸出了一大堆內(nèi)容占滿(mǎn)了整個(gè)屏幕。有必要格式化一下這些內(nèi)容^_^。腳本如下:
#需要將腳本保存起來(lái), $COLUMNS 變量才會(huì)有效
#注意: -n10 表示顯示最后10行內(nèi)容,可以自己修改
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/" | #過(guò)濾掉一些字段
#分析google蜘蛛訪(fǎng)問(wèn)
sed -u \
's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |
#過(guò)濾不需要的內(nèi)容
sed -u 's/ HTTP\/1.[01]//;
s/.NET CLR [0-9.]*//g;
s/Gecko\/[0-9]*//;
s/rv:[0-9.]*//;
s/Mozilla\/[0-9.]* //' |
sed -u "s/^/ /; s/^ *\([ 0-9.]\{15,\}\) -/\1/" | #對(duì)齊IP地址
sed -u "s/\(.\{$COLUMNS\}\).*/\1/" | #保證輸出行寬度統(tǒng)一
#高亮顯示 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 并在shell中調(diào)用,相信這個(gè)大家都會(huì)的了^_^。
linux監(jiān)控日志命令方法二、近期日志高效監(jiān)控腳本
如果網(wǎng)站流量很大的話(huà),日志文件是相當(dāng)龐大的。分析這些日志的時(shí)候就需要小心處理了,例如:筆者的訪(fǎng)問(wèn)日志已經(jīng)有700多MB了,一次性讀取的化會(huì)相當(dāng)?shù)穆?,通常我們使?tac 命令讀取文件最后一部分內(nèi)容,sed 命令用于結(jié)束讀取。腳本如下:
#!/bin/sh
# 返回最近N天內(nèi) "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 [天數(shù)] [文件名],即可使用。
講了這個(gè)這么多下面來(lái)段實(shí)例。一般,我們可能會(huì)感興趣會(huì)有哪些用戶(hù)訂閱了我們的rss種子。已經(jīng)采用何種方式訂閱的,skyfeed、google等等。
#!/bin/sh
export LANG=C #加速
feed="/feed/rss2.xml"
#查看一周內(nèi)訂閱rss的用戶(hù)的訪(fǎng)問(wèn)情況
./get_last_days 7 access_log |
#過(guò)濾rss feed url
grep -F "GET $feed" |
#剔除通過(guò)refer訪(fǎng)問(wèn)rss的站點(diǎn)
grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |
#獲取 ip地址 & 瀏覽器情況
sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |
#根據(jù)瀏覽器、用戶(hù)網(wǎng)段進(jìn)行排序
sort -k2 -k1,1 |
#合并
uniq -c |
#忽略單個(gè)請(qǐng)求
grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |
#忽略機(jī)器人訪(fǎng)問(wèn)
grep -vE -f agents_to_ignore |
#合并訂閱用戶(hù)
sed '
s/\([^\t]\)\t.*Firefox.*/\1\tFirefox/;
s/\([^\t]\)\t.*MSIE 7.0.*/\1\tIE7/;
s/\([^\t]\)\t.*Opera.*/\1\tOpera/;
s/\([^\t]\)\t.*Akregator.*/\1\tAkregator/;
s/\([^\t]\)\t.*Thunderbird.*/\1\tThunderbird/;
s/\([^\t]\)\t.*Liferea.*/\1\tLiferea/;
s/\([^\t]\)\t.*Google Desktop.*/\1\tGoogle Desktop/;
' |
#顯示瀏覽器類(lèi)型
cut -d"`echo -e '\t'`" -f2 |
#分組
sort |
#計(jì)數(shù)
uniq -c |
#識(shí)別使用google訂閱的用戶(hù)
sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |
#計(jì)數(shù)
sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |
#再次合并處理
uniq -f1 |
#排序
sort -k1,1n |
#對(duì)齊
sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |
#截取
sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported
/" |#截取
sed "s/\(.\{80\}\).*/ class="main">