プロセスの生存を監視するスクリプト
概要
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
ディスカッション
コメント一覧
まだ、コメントがありません