使用法:
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を
実行し
ました
あります