脚本例子2 开始 终了

#AutoRunStart_local

\#!/bin/bash

\#ローカル用
RUN_HOME=/d/soft/autorun/rel00/ap-serv/AutoRun

\# シェル名
SHELLNAME=\`basename $0`

\#LANG=ja_JP.UTF-8        ; export LANG 
HEAP_SIZE=64M           ; export HEAP_SIZE
\#ローカル用
JAVA_HOME="/c/Program Files (x86)/Java/jdk1.7.0_45" ; export JAVA_HOME
CONF_ROOT=$RUN_HOME/conf ; export CONF_ROOT
PROPERTY_FILE=AutoRun.conf ; export PROPERTY_FILE
HTTP_TIMEOUT=30 ; export HTTP_TIMEOUT

echo \`date +"%Y/%m/%d %H:%M:%S"` "INFO # ${SHELLNAME}#処理を開始します。"

\# ２重起動防止チェック
\#ローカル用
ret=\`ps -ef | grep "$JAVA_HOME"\`
status=\$?
if [ \$status = 0 ]; then
   echo \`date +"%Y/%m/%d %H:%M:%S"` "ERROR # 既にプロセスは起動しています。処理を終了します。"
   exit 1
fi

echo \`date +"%Y/%m/%d %H:%M:%S"` "INFO # プロセスを起動します。"

\#ローカル用
CLASSPATH=\$RUN_HOME/lib/autorun.jar:\$RUN_HOME/lib/ra.jar:\$RUN_HOME/lib/log4j-1.2.17.jar:\$RUN_HOME/lib/tal.jar:\$RUN_HOME/lib/commons-httpclient-2.0-rc2.jar:\$RUN_HOME/lib/commons-logging.jar:\$RUN_HOME/lib/commons-lang-2.0.jar

export CLASSPATH

\#ローカル用
	"\$JAVA_HOME"/bin/java \
	-server \
	-Xms\${HEAP_SIZE} -Xmx\${HEAP_SIZE} \
	-classpath \$CLASSPATH \
	-DConfigRoot=\$CONF_ROOT \
	-DAutoRunProperty=\$CONF_ROOT/\$PROPERTY_FILE \
	-DPXS_HTTP_TIMEOUT=$PXS_HTTP_TIMEOUT \
	"jp.co.autorun.AutoRun"
echo \`date +"%Y/%m/%d %H:%M:%S"` "INFO # \${SHELLNAME}#処理を終了しました。"

exit 0



#AutoRunEnd_local

\#!/bin/bash

\#ローカル用
RUN_HOME=/d/soft/autorun/ap-serv/AutoRun
CONF_ROOT=$RUN_HOME/conf ; export CONF_ROOT
PROPERTY_FILE=AutoRun.conf ; export PROPERTY_FILE
EVENT_FILE_KEY=EndEventFilepath ; export EVENT_FILE_KEY
\#ローカル用
JAVA_HOME="/c/Program Files (x86)/Java/jdk1.7.0_45" ; export JAVA_HOME

\# シェル名
SHELLNAME=\`basename $0`

\# 開始ログ
echo \`date +"%Y/%m/%d %H:%M:%S"` "INFO # ${SHELLNAME}#処理を開始します"

\# プロセスID取得
\#ローカル用
ps -ef | grep "\$JAVA_HOME" | awk 'BEGIN {}\
   {\
     printf "RUN_PROC_ID=%s; export RUN_PROC_ID\n", \$2;
     if ( NR > 1 ) {\
       printf "RUN_PROC_ID=CAN_NOT_SPECIFY_PROCESS; export RUN_PROC_ID\n";
     } \
   }' > tmptmptmp_$$

\# 停止指示ファイルパス取得
cat \$CONF_ROOT/\$PROPERTY_FILE | awk -F'=' 'BEGIN { KEYNAME=ENVIRON["EVENT_FILE_KEY"]; }\
   { len = length(\$1); \
     if ( len > 3 ) {\
        if ( \$1 == KEYNAME ) {\
           printf "EVENT_FILE_PATH=%s; export EVENT_FILE_PATH\n", \$2;
        }\
     }\
   }' >> tmptmptmp_$$

RUN_PROC_ID=NO_PROCESS
EVENT_FILE_PATH=0

. ./tmptmptmp_\$\$
rm tmptmptmp_$$

\# プロセス存在チェック
if [ \$RUN_PROC_ID = NO_PROCESS ]; then
   echo \`date +"%Y/%m/%d %H:%M:%S"` "WARN # プロセスが存在しません。処理を終了します。"
   exit 1
fi

\# プロセス特定チェック（対象プロセスが複数ある場合)
if [ \$RUN_PROC_ID = "CAN_NOT_SPECIFY_PROCESS" ]; then
   echo \`date +"%Y/%m/%d %H:%M:%S"` "ERROR # 停止プロセスが特定できません。処理を終了します。"
   exit 1
fi

if [ \$EVENT_FILE_PATH = 0 ]; then
   echo \`date +"%Y/%m/%d %H:%M:%S"` "ERROR \# \$CONF_ROOT/\$PROPERTY_FILE に \$EVENT_FILE_KEY の定義がありません。処理を終了します。"
   exit 1
fi

\# 停止待機時間を設定(停止指示ファイル監視間隔 + RUNタイムアウト時間 + a で 130秒程度待機する)
TIMEOUT_SEC=130
WAIT_TIME=5
WAIT_COUNT=0
WAIT_MAX=$(( TIMEOUT_SEC / WAIT_TIME ))


echo \`date +"%Y/%m/%d %H:%M:%S"\` "INFO # プロセスID=\$RUN_PROC_ID を停止します。"
echo \`date +"%Y/%m/%d %H:%M:%S"\` "INFO # \$TIMEOUT_SEC 秒以内に停止しない場合は強制終了します。"

\# 停止指示ファイル作成
touch \$EVENT_FILE_PATH

echo \`date +"%Y/%m/%d %H:%M:%S"` "INFO # プロセスを停止中です・・・"

\# プロセス終了チェック
forceShutDownFlag=0
\#ローカル用
ret=\`ps x -p \$RUN_PROC_ID | grep "\$JAVA_HOME"\`
status=\$?
while [ \$status = 0 ]
do
   sleep \$WAIT_TIME
   WAIT_COUNT=\$(( WAIT_COUNT + 1 ))
\#ローカル用
   ret=\`ps x -p \$RUN_PROC_ID | grep "\$JAVA_HOME"`
   status=\$?
   if [ \$status = 0 ]; then
       if [ \$WAIT_COUNT -gt \$WAIT_MAX ]; then
	   forceShutDownFlag=1
	   break
       fi
   fi
done

\# 停止指示ファイル削除
rm -f \$EVENT_FILE_PATH

if [ \$forceShutDownFlag = 0 ]; then
   echo \`date +"%Y/%m/%d %H:%M:%S"\` "INFO # プロセスが正常に停止しました。"
else
   kill -9 \$RUN_PROC_ID
   echo \`date +"%Y/%m/%d %H:%M:%S"\` "WARN # プロセスを強制終了しました。"
fi

echo \`date +"%Y/%m/%d %H:%M:%S"\` "INFO # \${SHELLNAME}#処理を終了しました。"