学习啦>学习电脑>操作系统>Linux教程>

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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/\(.*\) - \[[^]]*\]\(.*\)/ class="con">

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |

  #截取

  sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported

/" | #过滤掉一些字段

  #分析google蜘蛛访问

  sed -u \

  's#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"# class="con">

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |

  #截取

  sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported

()" #' |

  #过滤不需要的内容

  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="con">

linux监控日志命令

佳洲分享

  sed -u "s/\(.\{$COLUMNS\}\).*/ class="con">

linux监控日志命令

佳洲分享

  #高亮显示 referrer行

  sed -u "

  s/\([^\"]*\"[^\"]*\" 40[34] [0-9]* \"\)\([^\"]*\)\(\".*\)/ class="con">

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |

  #截取

  sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported

$norm/;t;

  s/\([^\"]*\"[^\"]*\" [0-9 -]* \"\)\([^\"]*\)\(\".*\)/ class="con">

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |

  #截取

  sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported

$norm/;t;

  "

  保存为 tail_access_log 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有700多MB了,一次性读取的化会相当的慢,通常我们使用 tac 命令读取文件最后一部分内容,sed 命令用于结束读取。脚本如下:

  #!/bin/sh

  # 返回最近N天内 "NCSA" 格式的 HTTP 日志

  days= class="con">

linux监控日志命令

佳洲分享

  log="

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  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="con">

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  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 [天数] [文件名],即可使用。

  讲了这个这么多下面来段实例。一般,我们可能会感兴趣会有哪些用户订阅了我们的rss种子。已经采用何种方式订阅的,skyfeed、google等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/ class="con">

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |

  #截取

  sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported

/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  sed '

  s/\([^\t]\)\t.*Firefox.*/ class="con">

linux监控日志命令

佳洲分享

  s/\([^\t]\)\t.*MSIE 7.0.*/ class="con">

linux监控日志命令

佳洲分享

  s/\([^\t]\)\t.*Opera.*/ class="con">

linux监控日志命令

佳洲分享

  s/\([^\t]\)\t.*Akregator.*/ class="con">

linux监控日志命令

佳洲分享

  s/\([^\t]\)\t.*Thunderbird.*/ class="con">

linux监控日志命令

佳洲分享

  s/\([^\t]\)\t.*Liferea.*/ class="con">

linux监控日志命令

佳洲分享

  s/\([^\t]\)\t.*Google Desktop.*/ class="con">

linux监控日志命令

佳洲分享

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/ class="con">

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |

  #截取

  sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported

./' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |

  #截取

  sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported

class="con">

linux监控日志命令

佳洲分享

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/ class="con">

linux监控日志命令

佳洲分享

  在linux系统下,日志记录是检查系统的最好的方法之一。下面由学习啦小编为大家整理了linux监控日志的相关命令和方法,希望大家喜欢。

  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#\(.*\) "http://www\.\(google\.[^/]*\).*[?&_]q=\([^&"]*\)[^"]*"#\1 "\2 (\3)" #' |

  #过滤不需要的内容

  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/" | #对齐IP地址

  sed -u "s/\(.\{$COLUMNS\}\).*/\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 并在shell中调用,相信这个大家都会的了^_^。

  linux监控日志命令方法二、近期日志高效监控脚本

  如果网站流量很大的话,日志文件是相当庞大的。分析这些日志的时候就需要小心处理了,例如:笔者的访问日志已经有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等等。

  #!/bin/sh

  export LANG=C #加速

  feed="/feed/rss2.xml"

  #查看一周内订阅rss的用户的访问情况

  ./get_last_days 7 access_log |

  #过滤rss feed url

  grep -F "GET $feed" |

  #剔除通过refer访问rss的站点

  grep -vE "pixelbeat.org.*(rv:|MSIE|AppleWebKit/|Konqueror|Opera) .* " |

  #获取 ip地址 & 浏览器情况

  sed 's/\([0-9]*\.[0-9]*\)\.[0-9]*\.[0-9]* .*"\([^"]*\)"$/\1\t\2/' |

  #根据浏览器、用户网段进行排序

  sort -k2 -k1,1 |

  #合并

  uniq -c |

  #忽略单个请求

  grep -vE " 1 .*(rv:|MSIE|AppleWebKit/|Konqueror|Opera).*" |

  #忽略机器人访问

  grep -vE -f agents_to_ignore |

  #合并订阅用户

  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/;

  ' |

  #显示浏览器类型

  cut -d"`echo -e '\t'`" -f2 |

  #分组

  sort |

  #计数

  uniq -c |

  #识别使用google订阅的用户

  sed 's/\(.*\)\(feedfetcher.html\)\(.*\)id=\([0-9]*\).*/\1\2.\4\3/' |

  #计数

  sed 's/ *[0-9]* .*\(http[^;]*\).* \([0-9]*\) subscriber.*/ \2 \1/' |

  #再次合并处理

  uniq -f1 |

  #排序

  sort -k1,1n |

  #对齐

  sed "s/^/ /; s/ *\([ 0-9]\{7,\}\) \([^ ].*\)/\1 \2/" |

  #截取

  sed "s/\(.\{80\}\).*/\1/" #note $COLUMNS not exported

/" |

  #截取

  sed "s/\(.\{80\}\).*/ class="con">

linux监控日志命令

佳洲分享
    3599863