Hatena::Grouptwitterircgateway

swirhenのはうはう

2009-07-15

TIGのCPU使用率が突然爆発して戻らなくなるのでなんとかした

18:09

特にアラートメールとか出す設定に自宅鯖はしてないので、たまにtopするとmonoが200%とかに張り付いたまま数時間を経過するなどしており危険。

というわけで、x分おきにcpu使用率を監視してy%を越えた状態が続いたら再起動をかけるシェルスクリプトを書いてみた。

cpuchk.sh

#!/bin/sh
WAKE=$1    # プロセスもしくはコマンドの名前 ex)TwitterircgatewayCLI
NAME=$2    # 再起動するシェル ex)/home/swirhen/tigkw.sh ※標準出力は捨てること
BORDER=$3            # CPUしきい値
ROOT=/home/swirhen/  # ファイルを作るディレクトリ
CPU=$ROOT$NAME.cpu   # CPU使用率を記録しておくファイル
if [ $# -eq 3 ]; then
  #PID=`ps -eo pid,comm,cmd | grep $NAME | grep -v grep | grep -v $0 | sed "s/^\s*//" | cut -d" " -f1` #;echo $PID
  #PID=`echo $PID | cut -d" " -f1` ;echo $PID #2個以上見つかった場合は1個目で決めうち対処。泥臭い...
  PID=`pgrep -f -o  $NAME` ;echo $PID
  # 上がってなければ上げ直す
  if [ ${PID:-null} = null ] ; then
    $WAKE;exit
  fi
  NOW=`top -n 1 -b | egrep "^\s*$PID" | awk '{print $9}'` ;echo $NOW
  if [ -f $CPU ] ; then
    OLD=`cat $CPU` ;echo $OLD
    # CPU使用率が連続でしきい値を越えていた場合、上げ直す
    if [ `expr $OLD` -gt $BORDER -a `expr $NOW` -gt $BORDER ] ; then
      $WAKE;exit
    else
      echo $NOW > $CPU # 現在の値に書き換える
    fi
  else
    echo $NOW > $CPU # 上がってるけどファイルが存在してなかった場合
  fi
fi

$ ./cpuchk.sh /home/swirhen/sh/tigkw.sh TwitterIrcGatewayCLI 100

などというようにつかう。これをcronで5分おきぐらいに実行。

# m h  dom mon dow   command
*/5 * * * * /home/swirhen/sh/cpuchk.sh /home/swirhen/sh/tigwake.sh TwitterIrcGatewayCLI 100

tigwake.sh

/home/swirhen/TIG/TwitterIrcGateway --(略) >/dev/null 2>&1 &
echo "TIG restarted at "`date` > /home/swirhen/tig.restart

cronでシェル実行する場合標準出力があると死ぬみたいなので/dev/nullしておこうね。うちだけかなあ。

超泥臭いのでもっとスマートにやる方法あったら教えて下さい

#7/17追記 pid取得のところにバグあったので直した。冗長すぎる...pgrep使いたいけどどうにかならんもんか...

あとpcpuで取れる値がtopだと100%張り付きなのに31.0とかになってて残念。計算方法が違うのかな...

#10/23追記 CPU使用率取得をtop -n 1にしてみた。

h_kenanh_kenan2009/07/16 11:17PIDとるところは
pgrep -f TwitterIrcGatewayCLIとかやるといいんじゃないかな。

swirhenswirhen2009/07/16 17:58よくかんがえたらそれでよかった
なおす

swirhenswirhen2009/07/16 18:16と思ったんだけどpgrepではこのシェル自身も引っかかる
どうしたもんか

AnatolyAnatoly2013/03/03 16:44That's the tihnnkig of a creative mind

fnaxjtlfnaxjtl2013/03/06 11:00VGKAEa <a href="http://hqplokvqwdfr.com/">hqplokvqwdfr</a>

avlxieavlxie2013/03/08 07:41TfeO0u , [url=http://qhljdzxlgfnl.com/]qhljdzxlgfnl[/url], [link=http://oauwvoxjuvmv.com/]oauwvoxjuvmv[/link], http://yqahkmcuqpvr.com/

2009-06-25

天下一はうはう会を開催します!!

02:48

<開催要項>

いろいろ仮決定。

日時:2009/10/31(土) 14:00~17:00ぐらい

場所:喫茶室ルノアール 新宿3丁目ビッグスビル店 5号室

費用:(室料\6700(3時間+プロジェクター貸し出し)/人数)+1ドリンクオーダー

参加者:

  • swirhen
  • mayuki
  • shunirr
  • ssig33
  • yukoGets
  • retlet
  • Trapezoid
  • karia
  • YurineMashiro
  • 望月

レジュメ:

  • はうはう基調講演(はうはうCTO:まゆきち先生たん)
  • はうはうプレゼン(ぼくがTIGを誰よりもはうはうできるんだ!) 予定スピーカー:swirhen、ssig33、shunirr、ましろん
  • はうはう質疑応答(まゆきち先生たんを質問や要望攻めにしてはうはうさせよう!)
  • 時間が余ったらプロジェクタアニメでもみましょう

等。アンカンファレンス形式とか言うのがあるらしいので採用してみたい。

参加申請こちらから。

http://twvt.us/hauhau

retletretlet2009/06/26 03:59参加します

shunirrshunirr2009/06/26 13:33LTします

ssig33ssig332009/06/26 13:36LT します

yukogetsyukogets2009/06/26 20:59参加します

h_kenanh_kenan2009/06/27 20:58とりあえず参加します

TrapezoidTrapezoid2009/09/28 17:35はい

lunaryuelunaryue2009/09/28 17:43様子をみます

kariakaria2009/09/28 20:21参加します
そしてましろんがLTします

yutamotyyutamoty2009/10/13 11:31いきます

motokngmotokng2009/10/25 19:12はうはうしたいです。皆さんのはうはうをご教授下さい。

ShameShame2012/11/27 08:30I was seriuolsy at DefCon 5 until I saw this post.

pokjhmtnrpokjhmtnr2012/11/30 03:532WjgX8 <a href="http://kguyvuqrgwfg.com/">kguyvuqrgwfg</a>

bpytybiknsobpytybiknso2012/11/30 20:28MmkA2I <a href="http://qtsjiacjqspv.com/">qtsjiacjqspv</a>

eavchbxrkeavchbxrk2012/12/02 02:14OV17VI , [url=http://causzqkoddys.com/]causzqkoddys[/url], [link=http://ejygwvjkppsb.com/]ejygwvjkppsb[/link], http://vubebsxtcixy.com/