Posted on 2006-07-16 23:52
acooly 閱讀(752)
評(píng)論(1) 編輯 收藏 所屬分類:
腳本語(yǔ)言
??????? 在一個(gè)老系統(tǒng)的維護(hù)中,遇到經(jīng)常因?yàn)閿?shù)據(jù)庫(kù)鏈接沒有關(guān)閉,導(dǎo)致鏈接資源過大,造成系統(tǒng)經(jīng)常掛掉,經(jīng)分析是因?yàn)橐郧暗拈_發(fā)人員在很多頁(yè)面中沒有關(guān)閉數(shù)據(jù)庫(kù)連接造成的。但現(xiàn)在項(xiàng)目中的頁(yè)面文件有上千個(gè),為了檢查出那些使用了數(shù)據(jù)庫(kù)連接并沒有關(guān)閉的頁(yè)面,我寫了下面的教本來(lái)遞規(guī)目錄中的頁(yè)面文件并分析是否有滿足條件的頁(yè)面。
#!/bin/sh # check database connection state of jsp file
# check_conn # to call: check_conn file check_conn(){ ? if [ $# != 1 ]; then ??? echo "Usage:check_conn file" ??? return 1 ? fi ? _file=$1 ? if [ -f "$_file" -a -r "$_file" ] ? then ???? _sedopen=`sed -n '/conn.jsp/p' $_file` ???? _sedclose=`sed -n '/conn.close/p' $_file` ???? if [ "$_sedopen" != "" -a "$_sedclose" = "" ] ???? then ?????? echo $_file ?????? return 0 ???? fi ? else ??? echo "$_file can not be open" ??? return 1 ? fi }
# recursion file list # tocall: ftree path logfile ftree(){ ? if [ $# != 2 ]; then ??? echo "Usage:ftree path logfile" ??? return 1 ? fi? ? _dir=$1 ? _log=$2 ? if [ ! -d "$_dir" -o ! -r "$_dir" ] ? then ??? echo "$_dir can not be operation." ??? return 1 ? fi ? for file in `ls -1 $_dir` ? do ??? if [ -d "$_dir/$file" ]; then ????? (ftree $_dir/$file $_log) ??? else ????? echo $_dir/$file >> filelist ????? ( ????? if [ `echo $file|awk '{if($1~/^.*.jsp/) print 0}'` ]; then ??????? _check="`check_conn $_dir/$file`" ??????? if [ "$_check" != "" ]; then ????????? echo $_check >> $_log ??????? fi ????? fi ????? ) ??? fi ? done ? return 0 } : # func progress bar # to call: procbar curval,maxval procbar(){ ? curval=$1 ? maxval=$2 ? barno=`expr 100 \* $curval / $maxval` ? count=0 ? while [ $count -lt $barno ] ? do ??? echo -n "|" ??? count=`expr $count + 1` ??? sleep 1 ? done? }
# BEGIN # procbar 5 30 FILEPATH=$1 LOGFILE=$2 if [ $# != 2 ]; then ? echo "Usage:checkfile FILEPATH LOGFILE" else ? ftree $FILEPATH $LOGFILE fi # END
|