用bash统计异常数
这里有一个使用bash的例子,你可能会在一个典型的项目中遇到类似的情况。当时我在一个已经有6年历史的大型Java项目中工作(我只是一个访客,在第6年进入这个项目,并在上面工作了大概8个月)。我的任务之一就是清理一些经常发生的异常,为此我做的第一件事就是提问:"哪些异常会被抛出?以什么样的频率?"当然了,没人知道,所以我的第一个任务就是自己动手找到答案。但问题是这个应用程序每星期会吐出超过2 GB的日志,很快我就意识到:即便只是尝试用文本编辑器打开这个文件,那都是在浪费时间。于是我坐下来,写了这么一段脚本:
#!/bin/bash
for X in $(egrep -o "[A-Z]w*Exception" log_week.txt | sort | uniq) ;
do
echo -n -e "processing $Xt"
grep -c "$X" log_week.txt
done
表4-2解释了这段bash小脚本的作用。
表4-2. 用于统计异常数量的复杂bash命令
文字
用途
egrep -o
找出日志文件中出现在“Exception”字眼之前的文字,对它们进行排序,然后得到一个消除重复之后的列表
"[A-Z]w*Exception"
用于定位异常信息的正则模式
log_week.txt
庞大的日志文件
| sort
将前面的查找结果管道给sort,生成一个排序后的异常列表
| uniq
去掉重复的异常信息
for X in $(. . .) ;
循环前面生成的异常列表,针对其中的每个异常执行这些代码
echo -n -e "processing $Xt"
把找到的异常输出在控制台上(这样我才知道这段脚本还在工作)
grep -c "$X" log_week.txt
在庞大的日志文件中找出这个异常出现的次数
这个项目到现在还在使用这段小程序。这是一个好例子:借助自动化工具,你可以从项目中找出一些从未有人发现的、有价值的信息。与其绞尽脑汁地猜测有哪些异常被抛出,不如把它们都找出来,这样也可以更有目的性、更容易地修复这些抛出异常的程序。
【编辑推荐】
- Autoconf使用关于autoconf安装条件介绍
- Autoconf使用生成Makefile的方法及其规则
- autoconf安装关于可移植的源代码详解
- Autoconf教程关于UNIX文件系统概述
- Autoconf教程关于安全管理介绍
推荐阅读
主要Shell内置命令Shell有很多内置在其源代码中的命令。这些命令是内置的,所以Shell不必到磁盘上搜索它们,执行速度因此加快。不同的Shell内置命令有所不同。A.2.1 bash内置命令.:执行当前进程环境中的程序。同so>>>详细阅读
本文标题:Linux Bash异常情况处理
地址:http://www.17bianji.com/yunwei/2098.html
1/2 1