Informixは、ロックテーブルのセッションを自動的にチェックします~~~~ find_lock.sh

使用法:

      1、chmod + x find_lock.sh

      2.2つのパラメーターが必要です。find_lock.shdbnamelocked_tabname

 

 

#!/ bin / bash 
############################################ #######################
ファイル名:find_lock.sh
#関数:テーブルをロックするセッションを自動検索します。
#作成者:Uncle.Cui
#バージョン:0.8更新日:2020-02-19
############################### ###################################

if [$#-ne 2]; 次に、
    echo "Usage:"
    echo "########################################## ### "
    echo" monitor_lock_table.sh dbname lock_tabname "
    echo" #################################### ######### "
    exit
fi

dbname = $ 1
tabname = $ 2

s_name = `echo $ 0 | awk -F '/' '{print $ NF}'`
ps aux | grep "$ s_name" | grep -vE "$$ | grep"> /tmp/lock.tabname
p_n = ` wc- l /tmp/lock.tabname|awk'{print $ 1} '`
if [$ p_n -gt 0]
then
    exit
fi


get_ses()
{ part = $ 1 echo " awk'BEGIN {RS = \" \\ n \\ n + \ "; ORS = \" \\ n \\ n \ "} /" $ part "/ {print \ $ 0} '.opn | grep rstcb | awk' {print \ $ 2} '| awk -F'x' '{print \ "onstat -u | grep \" \ $ 2}' | sh | awk '{print \ $ 3}' " >> get_awk.sh }


kill_ses()
{ read -p 'セッションを強制終了しますか(y | Yまたはn | N):' c if [-z "$ c"] then     exit 1 fi




if [$ c == "y" -o $ c == "Y"]
then
    cat .user_thread | while read uthd;
    do
        sid = `onstat -u | grep $ uthd | awk '{print $ 3}'` 
        onmode -z $ sid
    done
else
    exit 1
fi
}


oncheck -pt $ dbname:$ tabname | grep 'パーティションpartnum' | awk '{print $ 3}'> .partnum

[-f .partnum_hex] && cat / dev / null> .partnum_hex
[-f .partnum_in_lock] && cat / dev / null> .partnum_in_lock

cat .partnum |行の読み取り中;
do
   partn_hex = `printf"%x \ n "$ line`
   echo $ partn_hex >> .partnum_hex
   onstat -k | grep $ partn_hex | awk '{print $ 3}' | sort -u >> .partnum_in_lock
done

#cat / dev / null> .partnum_in_lock
cat .partnum_in_lock | sort -u> .user_thread
userthread = `cat .user_thread | wc -l`
if [$ userthread -eq 0] 
then
    onstat -g opn> .opn
    cat .partnum_hex | hexpnを読みながら;
    do
        get_ses $ hexpn
    done
    chmod + x get_awk.sh
    ./get_awk.sh >> get_ses.sh
    cat get_ses.sh | sort -u | awk '{print "onstat -g ses" $ 1}' | sh
    cat get_ses.sh | sort -u | awk '{print "onmode -z" $ 1}' | sh
    rm -rf get_ses.sh get_awk.sh
else 
    cat .user_thread | while read uthread;
    do
        onstat -u | grep $ uthread | awk '{print "onstat -g ses" $ 3}'
        エコー " - - - - - - - - - - - - - - - - - - - - - - - - ------------------------------------ ";     kill_sesを
    実行し
ました


あります

おすすめ

転載: blog.csdn.net/David_ifx/article/details/113704137