確認処理を入れよう

目的の処理を実行する前に、想定されている状態になっているかを確認する処理を実行します。また、同様に目的の処理を実行した後にも、想定された状態になったかを確認する処理を実行します。

記載方法
Apacheを停止するシェルスクリプトの場合、Apache停止処理の前後にApacheが起動状態・停止状態であることを確認します。
Apache(httpd)のプロセス数を数え、プロセス数が0個であれば停止中、1個以上であれば稼働中と判断します。
既にApacheが停止していたり、Apache処理後でもApacheの起動が確認できた場合は、想定外の状態と判断しログファイルにエラーを出力しシェルスクリプトを終了します。

事前確認:Apacheの起動中を確認する処理
Apacheが停止状態であった場合は停止状態であることをログに記録し、スクリプトを終了します。
  ### check apache started
  APACHE_PS_COUNT=`ps -ef | grep -v grep | grep httpd | wc -l`
  if [ 0 -eq ${APACHE_PS_COUNT} ] ; then
   TIME=`date +"%Y/%m/%d %H:%M:%S"`
   echo ${TIME} ${HOSTNAME} ${BASENAME} W Apache stoped already >> ${LOGFILE}
   echo ${TIME} ${HOSTNAME} ${BASENAME} I script end >> ${LOGFILE}
   exit
  fi

事後確認:Apacheの停止を確認する処理
Apacheが起動状態であった場合は起動状態であることをログに記録し、スクリプトを終了します。
   ### check apache stoped
   APACHE_PS_COUNT=`ps -ef | grep -v grep | grep httpd | wc -l`
   if [ 0 -lt ${APACHE_PS_COUNT} ] ; then
   TIME=`date +"%Y/%m/%d %H:%M:%S"`
   echo ${TIME} ${HOSTNAME} ${BASENAME} E Apache not stoped >> ${LOGFILE}
   echo ${TIME} ${HOSTNAME} ${BASENAME} I script end >> ${LOGFILE}
   exit
   fi

記載例
$ cat stop_apache.sh
#!/bin/bash
####################################################
# Script name : stop_apache.sh
# Discription : Stop apache program
# How to : # stop_apache.sh
# $1 : -
# $2 : -
# Example: # stop_apache.sh
# Date : 2017/10/10
# Maker: Ka20
####################################################
HOSTNAME=`uname -n`
BASENAME=${0##*/}
LOGFILE=stop_apache.log

TIME=`date +"%Y/%m/%d %H:%M:%S"`
echo ${TIME} ${HOSTNAME} ${BASENAME} I script start >> ${LOGFILE}

### check apache started
APACHE_PS_COUNT=`ps -ef | grep -v grep | grep httpd | wc -l`
if [ 0 -eq ${APACHE_PS_COUNT} ] ; then
TIME=`date +"%Y/%m/%d %H:%M:%S"`
echo ${TIME} ${HOSTNAME} ${BASENAME} W Apache stoped already >> ${LOGFILE}
echo ${TIME} ${HOSTNAME} ${BASENAME} I script end >> ${LOGFILE}
exit
fi

/etc/init.d/httpd stop

### check apache stoped
APACHE_PS_COUNT=`ps -ef | grep -v grep | grep httpd | wc -l`
if [ 0 -lt ${APACHE_PS_COUNT} ] ; then
TIME=`date +"%Y/%m/%d %H:%M:%S"`
echo ${TIME} ${HOSTNAME} ${BASENAME} E Apache not stoped >> ${LOGFILE}
echo ${TIME} ${HOSTNAME} ${BASENAME} I script end >> ${LOGFILE}
exit
fi

TIME=`date +"%Y/%m/%d %H:%M:%S"`
echo ${TIME} ${HOSTNAME} ${BASENAME} I Apache stoped >> ${LOGFILE}

TIME=`date +"%Y/%m/%d %H:%M:%S"`
echo ${TIME} ${HOSTNAME} ${BASENAME} I script end >> ${LOGFILE}

記事がお役に立ちましたら、サポートいただけるとありがたいです。いただいたサポートは活動費として利用させていただきます。