ホーム > フラッグblog > プロセス監視シェルスクリプト
Date 2011/11/22   

プロセス監視シェルスクリプト

突然の電話に出てみると

「WEBサーバーがダウンしてるみたいなんですけど!?」

 

とまぁ、サーバー管理者なら誰でも経験したことあるような、無いような話ですが。

 

普段動いてる時は感謝されず、止まると怒られる。

そんな理不尽なサーバー管理者。

 

自分の身は自分で守りましょう。

 

とゆーことで簡単なプロセス監視シェルスクリプトを作りました。

 

Cronに仕込むので /etc/cron.d/ 以下に仕込みます。

vi /etc/cron.d/process_chk.sh

 

#httpd
httpd=`ps ax | grep  '/usr/sbin/httpd' | grep -v 'grep'`
if [ -z "${httpd}" ]; then
    /etc/init.d/httpd restart
    wait
    httpd=`ps ax | grep  '/usr/sbin/httpd' | grep -v 'grep'`
    if [ -z "${httpd}" ]; then
        message="${message}httpd stopd !"
    else
        message="${message}httpd stopd  restart OK "
    fi
fi

#postmaster
postmaster=`ps ax | grep  'postmaster' | grep -v 'grep'`
if [ -z "${postmaster}" ]; then
    /etc/init.d/postgresql restart
    wait
    postmaster=`ps ax | grep  'postmaster' | grep -v 'grep'`
    if [ -z "${postmaster}" ]; then
         message="${message}postmaster stopd "
    else
         message="${message}postmaster stopd  restart OK "
    fi
fi

#postfix 
postfix=`ps ax | grep  '/usr/libexec/postfix/master' | grep -v 'grep'`
if [ -z "${postfix}" ]; then
    /etc/init.d/postfix restart
    wait
    postfix=`ps ax | grep  '/usr/libexec/postfix/master' | grep -v 'grep'`
    if [ -z "${postfix}" ]; then
        message="${message}postfix stopd "
    else
        message="${message}postfix stopd  restart OK "
    fi
fi

#send mail
if [ -n "${message}" ]; then
        mail -s "***ERROR***** process_chk.sh flagsystem.co.jp " "hogehoge@hoge.com" << body
${message} .
body
fi

exit 0

こんな感じです。
簡単ですね。

ps ax | grep 'hogehoge' | grep -v 'hogehoge'

とやって、結果が帰ってこなければ、一旦再起動を試し、
それでもダメならアラートです。

立ち上がった場合はアラートに「OK」が付きます。

 

ではクーロンに仕込んでやりましょう。

そのまえにパーミッションを忘れずに

 

chmod 755 /etc/cron.d/process_chk.sh

crontab -e

#process_chk.sh
*/5 * * * *  /etc/cron.d/process_chk.sh > /dev/null

で、気づいた人も多いかと思いますが、メールが止まって起動しなかった場合はお手上げです。

そこまで求めるなら別な方法考えないといけませんね。

この記事をシェアする

TOP

Flagsystem