车大人在MSN给我发过来一个链接,打开一看,发现是小花学习Linux日志分析的一些命令的笔记,刚好小曹也出去了,没人玩,统计了一下专题服务器的error log 发现了问题基本上都是non object这个老大难问题,这个问题并不是程序问题,而是程序需要查询的表被锁了,返回的对象是空。
好吧,统计自己最常用的命令是这样的:
history | awk {‘print $4′} | sort | uniq -c | sort -k1 -rn | head
得到的结果是:
330 cd
225 sudo
199 ls
54 exit
33 ll
27 grep
15 man
12 tail
11 whois
8 vi
似乎这个有点乱,用到主要知识是Linux 管道(pipe),awk,sort
简单点说Linux管道是从一个程序进程向另一个程序进程单向传递信息的一个方式和技术
它的主要特点是:单向
管道是将一个进程的输出作为另外一个进程输入,在接收进程信息前,系统临时保留信息
当然这是我自己关于管道的理解,不一定对
关于awk,sort等命令的使用知识可以参阅车大人的笔记:GUN工具箱,不再赘述
不过神仙同学的脚本更加厉害,连命令后的参数都统计出来了
history | perl -n -e ‘split(/\s+/,$_,5); print $_[4],”\n”‘ | tr “|” “\n” | awk ‘{print $1}’ | grep -E “^\w+$” | sort | uniq -c | sort -nr | head -n 20
话说神仙这个脚本,真的体现出神仙的风格—-特别喜欢用正则表达式,初学者看到这段脚本肯定立马疯掉
,涉及的知识太多了
第一次看到这些组合用法是在一本Linux 101的书上: 查找磁盘最大的那个用户目录,du -s /home/* |sort -rn 之后就知道那些小工具可以组合起来做很多快速的查找和统计了。系统维护期间对于快速定位问题很有用;
以后做应用也开始注意:应用日志都要尽量设计的格式便于用这些脚本工具进行统计处理;
[Reply]