サービス・プロセスの起動確認するシェルスクリプト

2018-12-17

サービスやプロセスの起動確認して落ちていれば起動するシェルスクリプト

特定のプロセスやサービスの起動を確認して落ちていれば起動するシェルスクリプトです。
シェルスクリプトの流れは、psコマンドでプロセスを確認して、wcコマンド起動してるプロセス数を確認します。その後でif文でプロセス数が「0」なら落ちているプロセスを起動します

サービスの起動方法が、CentOS 5.x,  CentOS6.x と CentOS 7.xと違うのでどちらのOSも紹介します。また起動方法はUbuntu系でも同じですので、Ubuntu系でも使えます

CentOS 5.x,  CentOS6.x, Ubuntuでプロセスが落ちていれば起動するシェルスクリプト

CentOS 5系, CentOS 6系, UbuntuでMySQLのプロセスが落ちていれば起動するシェルスクリプトです。スクリプトを再生後は、実行権限を付与しておきます。Cronに登録して一定間隔でチェックすればプロセスが落ちていても起動します

$ vim process_check.sh

#!/bin/bash

ProcessName=mysql

count=`ps -ef | grep $ProcessName | grep -v grep | wc -l`
if [ $count = 0 ]; then
  echo "$ProcessName is dead."
  sudo /etc/init.d/$ProcessName start
else
  echo "$ProcessName is alive."
fi

$ sudo chmod +x process_check.sh

CentOS 7でプロセスが落ちていれば起動するシェルスクリプト

CentOS7系でのシェルスクリプトの流れは上記のCentOS6系と同様で起動する場合に「systemctl」コマンドに置き換わっています。確認するプロセスは上記とおなじく「MySQL」のプロセスを確認しています。また、プロセスを起動する直前にメールコマンドを管理者になどにプロセスを起動したことメール送信しています

$ vim process_check.sh

#!/bin/bash

ProcessName=mysqld
MailAdress=test@example.com

count=`ps -ef | grep $ProcessName | grep -v grep | wc -l`
if [ $count = 0 ]; then
  echo "$ProcessName is dead."
  sudo systemctl start $ProcessName
  MailBody="$ProcessName is dead. $ProcessName start"
  MailSubject="$ProcessName is dead"
  echo $MailBody | mail -s $MailSubject $MailAdress
else
  echo "$ProcessName is alive."
fi

$ sudo chmod +x process_check.sh

 

スポンサーリンク