시작/종료 쉘 스크립트는 아래처럼 작성한다.
<시작 쉘> - startServer.sh
--------------------------------------------------------------------
#!/bin/sh
Log=/home/test/test.out
DATE=`date +%Y%m%d-%H%M%S`
mv -f "$Log" "$Log_`date +%Y-%m-%d-%H%M`"
echo "#################################################" >> $Log
echo " Test 서버를 시작합니다.."
Cnt=`ps -ex|grep "TestServer"|grep -v grep|wc -l`
PROCESS=`ps -ex|grep "Test"|grep -v grep|awk '{print $1}'`
if [ $Cnt -ne 0 ]
then
echo "$DATE : Test 서버(PID : $PROCESS)가 이미 동작하고 있습니다." >> $Log
else
nohup java TestServer >> $Log &
echo "$DATE : Test 서버가 시작되었습니다." >> $Log
fi
echo "#################################################" >> $Log
--------------------------------------------------------------------
<종료 쉘> - stopServer.sh
--------------------------------------------------------------------
#!/bin/sh
Log=/home/test/test.out
DATE=`date +%Y%m%d-%H%M%S`
echo "#################################################" >> $Log
echo " Test 서버를 종료합니다.."
Cnt=`ps -ex|grep "Test"|grep -v grep|wc -l`
PROCESS=`ps -ex|grep "Test"|grep -v grep|awk '{print $1}'`
if [ $Cnt -ne 0 ]
then
kill -9 $PROCESS
echo "$DATE : Test 서버(PID : $PROCESS)가 중지되었습니다." >> $Log
else
echo "$DATE : Test 서버가 실행중이 아닙니다." >> $Log
fi
echo "#########################################" >> $Log
--------------------------------------------------------------------
<무정지 서버 시작 쉘 스크립트> - startMonitor.sh
----------------------------------------------------------------------------------
#!/bin/bash
Log=/home/test/monitor.out
DATE=`date +%Y%m%d-%H%M%S`
NORMAL_SLEEP=60 #정상시 대기 시간
PROB_SLEEP=5 #장애발생시 대기 시간(장애시 곧바로 시작하기 위해)
#Log File Rename
mv -f "$Log" "${Log}_`date +%Y-%m-%d-%H%M`"
echo "#####################################" >> $Log
echo "$DATE TestServer Monitor Start!" >> $Log
echo "#####################################" >> $Log
while [ 1 ]
do
DATE=`date +%Y%m%d-%H%M%S`
Cnt=`ps -ex|grep "TestServer"|grep -v grep|wc -l`
if [ $Cnt < 1 ]
then
PROCESS=`ps -ex|grep "TestServer"|grep -v grep|awk '{print $1}'`
if [ "$PROCESS" != "" ]
then
echo "$DATE : 프로세스를 종료합니다." >> $Log
kill -9 $PROCESS
wait
fi
echo "$DATE : Test 서버를 재 기동합니다." >> $Log
# 여기서 서버를 재기동한다.
startServer.sh &
echo "$DATE : Test 서버를 재 기동 완료." >> $Log
sleep $PROB_SLEEP
continue
else
echo "$DATE : 정상 작동중 입니다." >> $Log
fi
sleep $NORMAL_SLEEP
done
----------------------------------------------------------------------------------