3.10.5 XNF/ASのプロセスを監視するシェルスクリプト

XNF/AS/BASEのプロセスを監視するシェルスクリプトを作成します。OSI拡張機能を使用する場合は,XNF/AS/BASEのプロセスに加えて,XNF/AS/OSI Extensionのプロセスも監視するシェルスクリプトを作成します。

各シェルスクリプトのサンプルは,XNF/ASのサンプルファイル用ディレクトリの下に格納されています。詳細については,「3.10.7 HAモニタで使用するサンプルファイル」を参照してください。

シェルスクリプトのサンプルを次に示します。

XNF/AS/BASEのプロセスを監視するシェルスクリプト(XNF_monitor.sh)

#!/bin/sh
#
# XNF/AS/BASE (XNF_monitor.sh)
# All Rights Reserved. Copyright (C) 2013, Hitachi, Ltd.
#
# The object program to monitor
# XNF/AS/BASE
XNFELDMON_PROGRAM=/xnfs/bin/XNFeldmon
XNFELDMON_COUNT=1
XNFRASDMON_PROGRAM=/xnfs/bin/XNFrasdmon
XNFRASDMON_COUNT=2
# Tuning parameter
SLEEP_TIME=5
MAX_RETRY_COUNT=3

# The definition of command
PS=/usr/bin/ps
GREP=/usr/bin/grep
WC=/usr/bin/wc
SLEEP=/usr/bin/sleep
BASENAME=/usr/bin/basename
PRINTF=/usr/bin/printf
EXPR=/usr/bin/expr

# process check
ProcessCheck()
{
   PROGRAM1=$1
   PROGRAM_COUNT=$2
   PROGRAM2=`$BASENAME $PROGRAM1`
   PROGRAM2=`$PRINTF "%.8s" "$PROGRAM2"`

   RETRY_COUNT=0
   while [ $RETRY_COUNT -lt $MAX_RETRY_COUNT ]
   do
       COUNT=`$PS -ef | $GREP -e "${PROGRAM1}" -e "¥[${PROGRAM2}" | $GREP -v grep | $WC -l`
       if [ $COUNT -eq $PROGRAM_COUNT ]
       then
           return 0
       else
           RETRY_COUNT=`$EXPR $RETRY_COUNT + 1`
       fi

       $SLEEP $SLEEP_TIME
   done

   exit
}

# Main loop
{
   while true
   do
       # XNF/AS/BASE
       ProcessCheck $XNFELDMON_PROGRAM $XNFELDMON_COUNT
       ProcessCheck $XNFRASDMON_PROGRAM $XNFRASDMON_COUNT

       $SLEEP $SLEEP_TIME
   done
}

チューニングパラメタの説明
下線で表記したシェル変数はチューニングパラメタです。次のとおり設定してください。
  • シェル変数SLEEP_TIME
    プロセス監視の実行間隔(単位:秒)を設定してください。
  • シェル変数MAX_RETRY_COUNT
    プロセス監視の最大試行回数を設定してください。
     
XNF/AS/BASEとXNF/AS/OSI Extensionのプロセスを監視するシェルスクリプト(XNF_OSIEX_monitor.sh)

#!/bin/sh
#
# XNF/AS/OSI Extension (XNF_OSIEX_monitor.sh)
# All Rights Reserved. Copyright (C) 2013, Hitachi, Ltd.
#
# The object program to monitor
# XNF/AS/BASE
XNFELDMON_PROGRAM=/xnfs/bin/XNFeldmon
XNFELDMON_COUNT=1
XNFRASDMON_PROGRAM=/xnfs/bin/XNFrasdmon
XNFRASDMON_COUNT=2
# XNF/AS/OSI Extension
XNFTPCLIDMON=/etc/xnftpclidmon
XNFTPGWDMON=/etc/xnftpgwdmon
XNFTPLSNDMON=/etc/xnftplsndmon
# Tuning parameter
SLEEP_TIME=5
MAX_RETRY_COUNT=3

# The definition of command
PS=/usr/bin/ps
GREP=/usr/bin/grep
WC=/usr/bin/wc
SLEEP=/usr/bin/sleep
BASENAME=/usr/bin/basename
PRINTF=/usr/bin/printf
EXPR=/usr/bin/expr

# process check
ProcessCheck()
{
   PROGRAM1=$1
   PROGRAM_COUNT=$2
   PROGRAM2=`$BASENAME $PROGRAM1`
   PROGRAM2=`$PRINTF "%.8s" "$PROGRAM2"`

   RETRY_COUNT=0
   while [ $RETRY_COUNT -lt $MAX_RETRY_COUNT ]
   do
       COUNT=`$PS -ef | $GREP -e "${PROGRAM1}" -e "¥[${PROGRAM2}" | $GREP -v grep | $WC -l`
       if [ $COUNT -eq $PROGRAM_COUNT ]
       then
           return 0
       else
           RETRY_COUNT=`$EXPR $RETRY_COUNT + 1`
       fi

       $SLEEP $SLEEP_TIME
   done

   exit
}

# process check2
ProcessCheck2()
{
   PROGRAM1=$1
   PROGRAM2=`$BASENAME $PROGRAM1`
   PROGRAM2=`$PRINTF "%.8s" "$PROGRAM2"`

   RETRY_COUNT=0
   while [ $RETRY_COUNT -lt $MAX_RETRY_COUNT ]
   do
       EXIST=`$PS -ef | $GREP -e "${PROGRAM1}" -e "¥[${PROGRAM2}" | $GREP -v grep`
       if [ "$EXIST" != "" ]
       then
           return 0
       else
           RETRY_COUNT=`$EXPR $RETRY_COUNT + 1`
       fi

       $SLEEP $SLEEP_TIME
   done

   exit
}

# Main loop
{
   while true
   do
       # XNF/AS/BASE
       ProcessCheck $XNFELDMON_PROGRAM $XNFELDMON_COUNT
       ProcessCheck $XNFRASDMON_PROGRAM $XNFRASDMON_COUNT

       # XNF/AS/OSI Extension
       ProcessCheck2 $XNFTPCLIDMON
       ProcessCheck2 $XNFTPGWDMON
       ProcessCheck2 $XNFTPLSNDMON

       $SLEEP $SLEEP_TIME
   done
}

チューニングパラメタの説明
下線で表記したシェル変数はチューニングパラメタです。次のとおり設定してください。
  • シェル変数SLEEP_TIME
    プロセス監視の実行間隔(単位:秒)を設定してください。
  • シェル変数MAX_RETRY_COUNT
    プロセス監視の最大試行回数を設定してください。