2013-10-24 shell脚本实践

回复 收藏

我有一个日志(php的slow_log) 几乎每分钟都有输出信息。需要我们来写个脚本分析一下它,目的就是为了归类汇总,按照它们出现的频次做个排序,假如日志是每天0点5分清空,那么按照每小时一次汇总分析该日志,最后在第二天0点0分时,再汇总一下整天的日志,怎么写呢? 下面我给出一个日志样例和我写的分析汇总脚本供参考。日志样例:

  1. [24-Oct-2013 00:05:39]  [pool www.lishiming.net] pid 19101

  2. script_filename = /data/release/www.lishiming.net/forum.php

  3. [0x00007f9279237e98] mysql_unbuffered_query() /data/release/www.lishiming.net/source/class/db/db_driver_mysql.php:147

  4. [0x00007f92792377a8] query() /data/release/www.lishiming.net/source/class/discuz/discuz_database.php:136

  5. [0x00007f9279236f40] query() /data/release/www.lishiming.net/source/class/table/table_forum_thread.php:932

  6. [0x00007f92792365e8] increase() /data/release/www.lishiming.net/source/module/forum/forum_viewthread.php:1034

  7. [0x00007f9279218f48] viewthread_updateviews() /data/release/www.lishiming.net/source/module/forum/forum_viewthread.php:353

  8. [0x00007f9279218050] +++ dump failed

  9. [24-Oct-2013 00:05:39]  [pool www.lishiming.net] pid 19754

  10. script_filename = /data/release/www.lishiming.net/forum.php

  11. [0x00007f9279237938] mysql_query() /data/release/www.lishiming.net/source/class/db/db_driver_mysql.php:147

  12. [0x00007f9279237248] query() /data/release/www.lishiming.net/source/class/discuz/discuz_database.php:136

  13. [0x00007f9279236dc0] query() /data/release/www.lishiming.net/source/class/discuz/discuz_database.php:100

  14. [0x00007f9279235d48] fetch_all() /data/release/www.lishiming.net/source/class/table/table_forum_thread.php:523

  15. [0x00007f9279218f48] fetch_all_search() /data/release/www.lishiming.net/source/module/forum/forum_forumdisplay.php:637

  16. [0x00007f9279218050] +++ dump failed

  17. [24-Oct-2013 00:06:07]  [pool www.lishiming.net] pid 22624

  18. script_filename = /data/release/www.lishiming.net/forum.php

  19. [0x00007f9279237938] mysql_query() /data/release/www.lishiming.net/source/class/db/db_driver_mysql.php:147

  20. [0x00007f9279237248] query() /data/release/www.lishiming.net/source/class/discuz/discuz_database.php:136

  21. [0x00007f9279236dc0] query() /data/release/www.lishiming.net/source/class/discuz/discuz_database.php:100

  22. [0x00007f9279235d48] fetch_all() /data/release/www.lishiming.net/source/class/table/table_forum_thread.php:523

  23. [0x00007f9279218f48] fetch_all_search() /data/release/www.lishiming.net/source/module/forum/forum_forumdisplay.php:637

  24. [0x00007f9279218050] +++ dump failed

  25. [24-Oct-2013 00:06:18]  [pool www.lishiming.net] pid 22624

  26. script_filename = /data/release/www.lishiming.net/forum.php

  27. [0x00007f9279237938] mysql_query() /data/release/www.lishiming.net/source/class/db/db_driver_mysql.php:147

  28. [0x00007f9279237248] query() /data/release/www.lishiming.net/source/class/discuz/discuz_database.php:136

  29. [0x00007f9279236dc0] query() /data/release/www.lishiming.net/source/class/discuz/discuz_database.php:100

  30. [0x00007f9279235d48] fetch_all() /data/release/www.lishiming.net/source/class/table/table_forum_thread.php:523

  31. [0x00007f9279218f48] fetch_all_search() /data/release/www.lishiming.net/source/module/forum/forum_forumdisplay.php:637

  32. [0x00007f9279218050] +++ dump failed

参考脚本

#! /bin/bash 

slow_log=/usr/local/php/log/php.slow

d=`date -d "-1 minute" +%H:%M`

d_h=`date +%H`

d_m=`date +%M`

d_d=`date +%Y%d`

d_d2=`date -d "-1 day" +%Y%d`

logdir="/log/php_slow/$d_d"

logdir2="/log/php_slow/$d_d2"

[ -d $logdir ] || mkdir -p $logdir

[ -d $logdir2 ] || mkdir -p $logdir2

if [ $d_m -eq "00" ]; then 

    d1=`date -d "-1 hour" +%H`

    n1=`grep -n " $d1:[0-9][0-9]:" $slow_log|head -n1 |awk -F':' '{print $1}'`

    n2=`wc -l $slow_log |awk '{print $1}'`

    n3=$[$n2-$n1]

    tail -n $n3 $slow_log>/tmp/1.txt

    sed 's/\[0x.*\]//g' /tmp/1.txt |xargs > /tmp/2.txt

    n=`grep '\[pool' /tmp/1.txt|wc -l`

    for i in `seq 1 $n`; do awk -F '+++ dump failed' '{print $'"$i"'}' /tmp/2.txt; done > /tmp/3.txt

    if [ $d_h -ne "00" ]; then

        sed 's/^.*script_filename = //' /tmp/3.txt |grep -v '^$'|sort |uniq -c |sort -rn > $logdir/$d1\_slow_log

    else

        sed 's/^.*script_filename = //' /tmp/3.txt |grep -v '^$'|sort |uniq -c |sort -rn > $logdir2/$d1\_slow_log

        sed 's/^.*[0-9] \//\//' $logdir2/*_log |sort |uniq -c |sort -rn > $logdir2/$d_d2\_slow_log

    fi

fi   

2013-10-24 15:37 举报
已邀请:
0

月光水岸

赞同来自:

看一下
0

地平线

赞同来自:

看看
0

Hello_Lemon

赞同来自:

look.
0

good

赞同来自:

看看
0

SHMILY

赞同来自:

{:4_91:}
0

ocean

赞同来自:

{:5_121:}
0

泡沫。

赞同来自:

ddddddddddddddd
0

泡沫。

赞同来自:

ddddddddddddddd
0

Budweiser小王子

赞同来自:

复习
0

轩鹏

赞同来自:

1
0

齐天大圣

赞同来自:

学习一下!
0

木字当头

赞同来自:

0

鸵鸟

赞同来自:

xx
0

huifeidexiaxia

赞同来自:

很实用
0

寒一

赞同来自:

学习下
0

nihao426181

赞同来自:

看看
0

追梦人

赞同来自:

Cxz
0

So Long

赞同来自:

看看
0

chenzudao1234

赞同来自:

kankan
0

王靖

赞同来自:

怎搞的  难道只有我一个人有字数限制吗
0

白紙黑_Zi

赞同来自:

幸苦老师了,学习学习
0

王钦利

赞同来自:

11111111111111111111
0

菠萝

赞同来自:

看看
0

xuyl

赞同来自:

学习,学习。。。
0

aqi

赞同来自:

学习      
0

阳光

赞同来自:

学习学习
0

大自然

赞同来自:

学习学习
0

2422606568

赞同来自:

看看
0

yaabb163

赞同来自:

dddddddddd
0

cmzsteven

赞同来自:

{:4_91:}
0

chekir

赞同来自:

看看
0

wuhen

赞同来自:

看看。
0

hi_tomorrow

赞同来自:

学习
0

ayu

赞同来自:

学习
0

GAARA

赞同来自:

{:4_109:}
0

qq20847697

赞同来自:

不懂,看看
0

dantes

赞同来自:

看看
0

hangtiangazi

赞同来自:

顶铭哥。。。
0

wangdi244

赞同来自:

顶铭哥
0
这可真有用了。
0

andreking

赞同来自:

还是不会只能看答案
0

iwannachange

赞同来自:

1
0

鑫柏

赞同来自:

{:4_99:}
0

第六感

赞同来自:

{:4_109:}
0

剑在飞

赞同来自:

{:4_92:}{:4_92:}{:4_92:}
0

307141950

赞同来自:

看看
0

tjlygdx

赞同来自:

学习shell
0

xebszw

赞同来自:

1
0

liang1990

赞同来自:

不懂意思
0

乌贼的帽子

赞同来自:

学习
0

渐行渐远

赞同来自:

学习
0

放牛

赞同来自:

{:7_164:}
0

汤小东

赞同来自:

learn
0

zhangw

赞同来自:

看看
0

翟厚翔

赞同来自:

求思路
0

Rohero

赞同来自:

xuexi
0

ldp840611

赞同来自:

看目的地
0

石头

赞同来自:

{:4_91:}
0

蓝色风暴

赞同来自:

表示看了题目都不知道到底想干嘛
0

weifeng1463

赞同来自:

ok
0

369666951

赞同来自:

看看
0

369666951

赞同来自:

谁能解释下
0

zhangzihao

赞同来自:

看看
0

考鸡蛋

赞同来自:

想不出来。。看看!!学习下!!
0

Landon

赞同来自:

ads
0

hlymlv

赞同来自:

看看
0

loveyouhyf

赞同来自:

没明白怎么回事,看看
0

xteplinux

赞同来自:

{:4_91:}
0

xteplinux

赞同来自:

{:4_91:}
0

licengceng

赞同来自:

学习
0

老咸菜

赞同来自:

1
0

lin19890913

赞同来自:

看看
0

syk

赞同来自:

look
0

jia3700

赞同来自:

学习
0

KICAZ629

赞同来自:

看看
0

落涧飞鹰

赞同来自:

看看
0

jokerhuman

赞同来自:

学习
0

wyxqqhaha

赞同来自:

查看脚本
0

ttly123

赞同来自:

学习学习
0

lyhabc

赞同来自:

过来看看   
0

ayuan124

赞同来自:

过来看看,shell 不会写,看了几篇shell题,没点思路,这要如何才能上手
0

thedawn

赞同来自:

1
0

HwangChen

赞同来自:

66666
0

我是学渣

赞同来自:

{:4_99:}
0

lin13750529011

赞同来自:

谢谢
0

bbcw

赞同来自:

先看看答案
0

沈诚

赞同来自:

自己写不出,学习一下
0

gxp2008

赞同来自:

  1. sort slow_log |uniq -c

我也不太明白分类汇总的。看看
0

cxiaodian

赞同来自:

good
0

自己定义

赞同来自:

看看
0

xzzlamp

赞同来自:

11
0

wsw13640218682

赞同来自:

看看
0

乐橙306

赞同来自:

1
0

阿杰

赞同来自:

123
0

huanglin

赞同来自:

来实际看看
0

CNS2016

赞同来自:

看看
0

branttsai

赞同来自:

学习学习,谢谢。
0

郭贞

赞同来自:

{:4_92:}
0

贾刚

赞同来自:

123123
0

等风来

赞同来自:

学习

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: