乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      將informix中連接超半小時沒有動作的進程kill掉-基礎(chǔ)管理_Informix_SQ...

       笑晨風 2010-10-29
      將informix中連接超半小時沒有動作的進程kill掉時間:2009-04-09 23:00來源:Sql學習社區(qū) 作者:Sqler 點擊:9次
         公司的erp主機因 licence數(shù)量有限,近來經(jīng)常發(fā)生用戶超限,不能連接.
      其實很多用戶都是將系統(tǒng)連接上,半天也不用,這無形中造成很大的浪費.
      資源分配造成不合理的現(xiàn)象.想用的人連接不上,不用系統(tǒng)的人卻連接在系統(tǒng)上.
      神碼提供了一個shell,不過執(zhí)行效率上有點慢.每次一運行系統(tǒng)就變得很慢.
      cpu就會沖到90--100%,會執(zhí)續(xù)20分鐘.
      我將它作了一些改動,效率提高了不少.時間現(xiàn)在基本上都在5分鐘內(nèi)就完成了,cpu
      也不會沖到很高.呵呵還是有點成就的 ^_^
      以下是shell的內(nèi)容:
      ======================================================
      #!/bin/ksh
      INFORMIXSERVER=on_shm01;export INFORMIXSERVER ONCONFIG=onconfig.on_01;export ONCONFIG DB_LOCALE=zh_tw.big5;export DB_LOCALE SERVER_LOCALE=zh_tw.big5;export SERVER_LOCALE CLIENT_LOCALE=zh_tw.big5;export CLIENT_LOCALE LANG=zh_tw.big5;export LANG
      echo "INFORMIXSERVER=$INFORMIXSERVER" Sqlclub
      echo "ONCONFIG=$ONCONFIG"
      INFORMIXDIR=/u1/informix;export INFORMIXDIR PATH=$INFORMIXDIR/bin:$PATH;export PATH DBDATE=Y4MD/;export DBDATE DBCENTURY=C;export DBCENTURY DBDELIMITER='^A';export DBDELIMITER
      if [ $# -ne 1 ]  then
      echo "Usage: killidle.sh idletime "
      echo "Ex: killidle.sh 1800 "
      echo " (R idle WL 30 informix Session )"
      echo " (R?: informix Sesion S?gg?@WL???)"
      exit
      fi
      idle=
      now=`date | awk '{ print }'`
      kill_time=`date '+%y/%m/%d-%H:%M:%S'`
      echo "?:$kill_time"
      tsNow=0
      hhn=`echo $now | cut -d':' -f 1`
      mmn=`echo $now | cut -d':' -f 2`
      Sqlclub

      ssn=`echo $now | cut -d':' -f 3`
      tsNow=`expr $hhn \* 3600 + $mmn \* 60 + $ssn`
      ToSec() {
      # : opentime
      hh1=`echo | cut -d':' -f 1`
      mm1=`echo | cut -d':' -f 2`
      ss1=`echo | cut -d':' -f 3`
      ts1=`expr $hh1 \* 3600 + $mm1 \* 60 + $ss1 `
      # : writetime
      hh2=`echo | cut -d':' -f 1`
      mm2=`echo | cut -d':' -f 2`
      ss2=`echo | cut -d':' -f 3`
      ts2=`expr $hh2 \* 3600 + $mm2 \* 60 + $ss2 ` if [ ts1 -gt ts2 ]
      then
      ts=`expr $tsNow - $ts1`
      else
      ts=`expr $tsNow - $ts2`
      fi Sqlclub.cn
      #echo $ts
      }
      i=0
      cnt=1
      sesID=""
      opnetime=""
      readtime=""
      writetime=""
      #X?sW informix sesion
      onstat -g ses > t1.tmp
      tail +6 t1.tmp>ifx_u.tmp
      rm t1.tmp
      ps -ef|awk '{print }' > ps_ef.tmp
      #dX? session su?
      for f in `onstat -g ntt | grep sqlexec | awk '{ print ,,, }'` do
      i=`expr $i + 1`
      case $i in
      1) sesID=$f
      ;;
      2) opentime=$f
      ;;
      3) readtime=$f
      ;;
      4) writetime=$f
      ToSec $readtime $writetime
      # echo "Session ID:$sesID , opentime:$opentime , readtime:$readtime , writetime:$writetime , idle time:$ts Sec. "
      if [ $ts -gt $idle ]  # pGWL idle time 內(nèi)容來自Sqlclub.cn
      then
      echo "$cnt)SeID:$sesID,OTime:$opentime,RTime:$readtime,WTime:$writetime,IdleTime:$ts Sec."
      while read L1
      do
      t_ses=`echo $L1 | awk '{ print }'`
      # echo "$L1,t_ses is: $t_ses -sesID is :$sesID"
      if [ $t_ses -eq $sesID ]
      then
      t_uname=`echo $L1 | awk '{ print }'` # session woner
      t_kill=`grep $t_uname $INFORMIXDIR/top_nokill.list | grep -v grep | wc | awk '{ print }'`
      if [ t_kill -eq 0 ]; # pGb top_nokill.list,NnR
      then
      t_pid=`echo $L1 | awk '{ print }'`
      ## t_pid_no=`ps -ef | grep $t_pid | grep -v grep | wc | awk '{ print }'` Sqlclub學習社區(qū)
      t_pid_no=`grep $t_pid ps_ef.tmp|wc -l`
      t_tty=`echo $L1 | awk '{ print "pts/", }' | tr -d ' '`
      t_host=`echo $L1 | awk '{ print }'`
      kill_time=`date '+%H:%M:%S'`
      if [ $t_pid_no -eq 1 ]
      then
      echo "Kill:PID:$t_pid,Uname:$t_uname,Tty:$t_tty,pid_no:$t_pid_no,time:$kill_time"
      onmode -z $t_ses
      kill -9 $t_pid
      else
      echo "Keep(1):PID:$t_pid ,Uname:$t_uname ,tty:$t_tty,pid_no:$t_pid_no"
      fi
      else
      echo "Keep(2):PID:$t_pid ,Uname:$t_uname ,tty:$t_tty"
      fi
      break;
      fi
      done < ifx_u.tmp
      cnt=`expr $cnt + 1`
      fi
      i=0;;
      esac
      done
      kill_time=`date '+%y/%m/%d-%H:%M:%S'`
      echo "?:$kill_time" copyright Sqlclub
      rm ifx_u.tmp
      rm ps_ef.tmp
      . /u1/fgl2c.run/envcomp
      fglWrt -u

      ##############################################
      將此shell放入到crontab中 每半小時執(zhí)行一次,這樣基本上半小時不用系統(tǒng)的用戶,就被kill了
      注意此shell一定是由root來執(zhí)行的,因為只有root能kill別人的pid號
      以下是我的crontab中的內(nèi)容:在上班時間每半小時執(zhí)行一次此shell.并將相應(yīng)的log保存到killidle.log文件中.
      # crontab -l
      0,30 8,9,10,11,12,13,14,15,16,17 * * * sh /u1/informix/killidle.sh 1800 >>killidle.log 2>&1

      #后計:
      此shell在配合tiptop erp執(zhí)行上還是有點問題,因為tiptop的主畫面也要占用一個數(shù)據(jù)庫連接,而如果跑一個長一點的程序
      如mrp或財務(wù)結(jié)算成本的程序,因為這些程序都是tiptop主畫面進程的子進程,在作killidle判斷時并不會結(jié)合幾個進程一起來作.
      也就是說,如果要kill主程序進程時,不會考慮它是否還有子進程在運行,且子進程的數(shù)據(jù)庫訪問時間沒有超過idle時間.而是直接將主
      Sqlclub學習社區(qū)
      進程kill了,從而造成在跑這些長程序時有誤kill的情況.
      目前正在改進這個方面,流程基本上出來了,代瑪寫的差不多了,不過感覺這樣一來邏輯上太復雜,程序執(zhí)行上會很慢,而且執(zhí)行長程序的
      時間不是很頻繁,所以在想要不要將它再寫下去.

      本篇文章來源于 SQL學習社區(qū) 原文鏈接:http://www./JiChuGuanLi/2009-04/1851.htm

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多