Linux Bash異常情況處理
用bash統(tǒng)計異常數(shù)
這里有一個使用bash的例子,你可能會在一個典型的項目中遇到類似的情況。當時我在一個已經(jīng)有6年歷史的大型Java項目中工作(我只是一個訪客,在第6年進入這個項目,并在上面工作了大概8個月)。我的任務(wù)之一就是清理一些經(jīng)常發(fā)生的異常,為此我做的第一件事就是提問:"哪些異常會被拋出?以什么樣的頻率?"當然了,沒人知道,所以我的第一個任務(wù)就是自己動手找到答案。但問題是這個應(yīng)用程序每星期會吐出超過2 GB的日志,很快我就意識到:即便只是嘗試用文本編輯器打開這個文件,那都是在浪費時間。于是我坐下來,寫了這么一段腳本:
#!/bin/bash |
表4-2解釋了這段bash小腳本的作用。
表4-2. 用于統(tǒng)計異常數(shù)量的復(fù)雜bash命令
文字 |
用途 |
egrep -o |
找出日志文件中出現(xiàn)在“Exception”字眼之前的文字,對它們進行排序,然后得到一個消除重復(fù)之后的列表 |
"[A-Z]\w*Exception" |
用于定位異常信息的正則模式 |
log_week.txt |
龐大的日志文件 |
| sort |
將前面的查找結(jié)果管道給sort,生成一個排序后的異常列表 |
| uniq |
去掉重復(fù)的異常信息 |
for X in $(. . .) ; |
循環(huán)前面生成的異常列表,針對其中的每個異常執(zhí)行這些代碼 |
echo -n -e "processing $X\t" |
把找到的異常輸出在控制臺上(這樣我才知道這段腳本還在工作) |
grep -c "$X" log_week.txt |
在龐大的日志文件中找出這個異常出現(xiàn)的次數(shù) |
這個項目到現(xiàn)在還在使用這段小程序。這是一個好例子:借助自動化工具,你可以從項目中找出一些從未有人發(fā)現(xiàn)的、有價值的信息。與其絞盡腦汁地猜測有哪些異常被拋出,不如把它們都找出來,這樣也可以更有目的性、更容易地修復(fù)這些拋出異常的程序。
【編輯推薦】