Linux Bash异常情况处理

运维 系统运维
《卓有成效的程序员》本书就是讲述如何在开发软件的过程中变得更加高效。本章会介绍一些不那么显而易见、价值却毫不逊色的自动化方法。本节讲述的是用bash统计异常数。

用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 $X\t"
    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 $X\t"

把找到的异常输出在控制台上(这样我才知道这段脚本还在工作)

grep -c "$X" log_week.txt

在庞大的日志文件中找出这个异常出现的次数

这个项目到现在还在使用这段小程序。这是一个好例子:借助自动化工具,你可以从项目中找出一些从未有人发现的、有价值的信息。与其绞尽脑汁地猜测有哪些异常被抛出,不如把它们都找出来,这样也可以更有目的性、更容易地修复这些抛出异常的程序。

【编辑推荐】

  1. Autoconf使用关于autoconf安装条件介绍 
  2. Autoconf使用生成Makefile的方法及其规则
  3. autoconf安装关于可移植的源代码详解
  4. Autoconf教程关于UNIX文件系统概述
  5. Autoconf教程关于安全管理介绍
责任编辑:chenqingxiang 来源: 机械工业出版社
相关推荐

2009-12-25 13:46:32

ADO 编程

2018-08-14 13:26:07

异常设计断网

2010-08-11 12:18:23

无线路由异常

2020-02-07 10:14:07

程序员设计人生第一份工作

2023-07-07 07:53:26

Python异常处理

2020-06-15 08:12:51

try catch代码处理器

2023-03-30 22:39:39

MySQL数据库

2020-12-18 10:29:06

人脸识别AI人工智能

2022-07-11 07:36:36

缓存缓存雪崩缓存击穿

2022-11-02 15:56:45

littlefscommit机制

2017-01-12 19:34:58

2021-12-13 09:55:04

机房巡检通信机房

2010-11-03 13:09:14

DB2卸载方法

2013-04-07 10:01:26

Java异常处理

2019-05-19 16:53:57

TCP协议TCP通信三次握手

2023-11-22 09:42:02

系统检测

2022-11-16 09:03:35

Sentry前端监控

2019-06-24 08:53:01

Bash脚本Linux系统运维

2011-04-06 10:52:51

Java异常处理

2023-12-01 08:39:29

分布式锁系统
点赞
收藏

51CTO技术栈公众号