[프로세스 계속생성]쉘 스크립트 좀 봐 주십시오

innu의 이미지

웹로직 구동을 한번에 하기위해 만든 스크립트 입니다.

#!/bin/sh

start() {
    cd /home/weblogic
    ./startWebLogic.sh &
}

stop() {
    kill -9 `ps -ef | grep weblogic | grep -v weblogic | awk '{print $2}'`
}

restart() {
    stop
    start
}

CMD="WEB"
ARGV=$1
if [ "x$ARGV" = "x" ] ; then
    echo "»ç¿ë¹ý : "
    echo "Weblogic 시작 : WEB start"
    echo "Weblogic 종료 : WEB stop"
    echo "Weblogic 재시작 : WEB restart"
    exit 1
fi

$CMD $ARGV

실행시키니까 WEB 프로세스를 계속 생성시키더니 급기야 시스템을 다운시키네요.
얼마전에 젠투 뉴스레터에 떴던 쉘폭탄과 같은 현상입니다.

곰곰히 스크립트를 분석했는데도 딱히 떠오르지가 않습니다..

innu의 이미지

맨 밑에 $CMD $ARGV 를 해주니 계속 프로세스를 .. 이런.. :x
그리고 필터링도 잘못되고... :x :x

Debian Spirit !!!

doodoo의 이미지

if [ "x$ARGV" = "x" ] ; then

= 대신에 == 를 사용해야 할듯....하구요...

전체 문을 감싸서 case.......esac로 해결 하는것이...적절하지 않을 까요?

case  "$1" in
  start) 
       start
        ;;
  stop)
       stop
       ;;
  *) 
    echo "Weblogic 시작 : WEB start"
    echo "Weblogic 종료 : WEB stop"
    echo "Weblogic 재시작 : WEB restart"
    exit 1
esac

모 대충 이렇게.....