プロセスの生存を監視するスクリプト

概要

Linuxでスクリプトを作っていると、あるプロセスが上がってないとサービス起動するとか、あるプロセスが上がってないとメールするとか、そのような監視プログラムを利用する場合あります。

その都度、以前使用したスクリプトでその箇所をコピーしたりしてきましたが、簡単なスクリプトですので紹介します

プロセス監視 スクリプト

スクリプトの流れですが、以下となります

  • psコマンドで起動しているプロセス一覧を表示する
  • その一覧よりgrepして監視するスクリプトが何個起動している確認する
  • その結果をif文で分岐して、必要な処理をおこなう

監視するプロセスがダウンしていれば、サービスを起動する

特定のサービスの起動しているか停止しているかの監視をおこない、停止していれば起動するスクリプトです。

確認するサービスはApacheで作成しています。また、CentOS 6.x  と CentOS 7.xでサービスの起動するコマンドが違うのでその箇所は、使用する環境に合わせてください

#! /bin/bash

#監視するプロセス名を定義する
PROCESS_NAME=httpd

#監視するプロセスが何個起動しているかカウントする
count=`ps -ef | grep $PROCESS_NAME | grep -v grep | wc -l`

#監視するプロセスが0個場合に、処理を分岐する
if [ $count = 0 ]; then

#0個場合は、サービスが停止しているので起動する
  echo "$PROCESS_NAME Down"
  echo "$PROCESS_NAME Start"

# Cent OS 6.xの場合は、以下を使用する
  /etc/init.d/httpd restart
# Cent OS 7.xの場合は、以下を使用する
  systemctl restart httpd.service

else
  echo "$PROCESS_NAME OK"
fi

監視するプロセスがダウンしていれば、ダウンしていることをメールする

特定のサービスの起動しているか停止しているかの監視をおこない、停止していれば指定したメールアドレスにメールするするスクリプトです。

確認するサービスはApacheで作成しています。

#! /bin/bash

#監視するプロセス名を定義する
PROCESS_NAME=httpd

#メールを送信するメールアドレスを指定する
MAILTO=user@hoge.com

#メール本文に使用するファイルを指定する
MAILFILE=/var/tmp/pschk_mail.txt

#監視するプロセスが何個起動しているかカウントする
count=`ps -ef | grep $PROCESS_NAME | grep -v grep | wc -l`

#監視するプロセスが0個場合に、処理を分岐する
if [ $count = 0 ]; then

#0個場合は、サービスが停止している事をメールする
  echo "$PROCESS_NAME Down"

#メールの本文を生成
  hostname > $MAILFILE
  date "+%Y/%m/%d %H:%M:%S" >> $MAILFILE
  echo "PROCESS_NAME Down" >> $MAILFILE
  echo "command"  >> $MAILFILE
  echo "ps -ef | grep $PROCESS_NAME | grep -v grep | wc -l" >> $MAILFILE
  echo "$count" >> $MAILFILE

#メールの件名を生成
  MAIL_SUB="Process $PROCESS_NAME Down"

#メールを送信する
  mail -s $MAIL_SUB $MAILTO < $MAILFILE

else
  echo "$PROCESS_NAME OK"
fi

 

スポンサーリンク