Develope/LINUX

[ShellScript] 프로세스 시작, 종료 sh (feat. 데몬)

고로이 2017. 11. 16. 10:28
반응형

* start.sh

#!/bin/bash


SERVICE_NAME=**********

SERVICE_DIR=/home/*********


PID=$SERVICE_DIR/bin/app.pid


DATE=$(date --date=$1 +"%Y%m")

LOG=$SERVICE_DIR/logs/app.log.$DATE

ERROR=$SERVICE_DIR/logs/app-error.log



EXEC_FILE="${BASH_SOURCE[0]}"

BASE_NAME=`basename "$EXEC_FILE"`



if [ "$EXEC_FILE" = "./$BASE_NAME" ] || [ "$EXEC_FILE" = "$BASE_NAME" ]; then

        TMP_FULL_PATH=`pwd`

        cd ..

        FULL_PATH=`pwd`

        cd $TMP_FULL_PATH


else

        FULL_PATH=`echo "$EXEC_FILE" | sed 's/'"${BASE_NAME}"'$//'`

        cd "$FULL_PATH"                 > /dev/null 2>&1

        TMP_FULL_PATH=`pwd`

        cd ..

        FULL_PATH=`pwd`

        cd $TMP_FULL_PATH

fi



export CLASSPATH=.:$FULL_PATH/conf:$FULL_PATH/libs/*:$CLASSPATH


COMMAND="java -Dlog4j.configurationFile=$SERVICE_HOME/conf/log4j.xml -cp $CLASSPATH com.**********.collector.data.CollectorMain"

if [ $1 ]

then

   $COMMAND $1 $2 $3


else

    if [ -f $PID ]

    then

        echo

        echo "Already started. PID: [$( cat $PID )]"

    else

        echo "====$SERVICE_NAME Start"

        touch $PID

        if nohup $COMMAND >>$LOG 2>&1 &

        then echo $! >$PID

             echo "Done."

             echo "$(date '+%Y-%m-%d %X'): START" >>$LOG

        else echo "Error... "

             /bin/rm $PID

        fi

    fi


fi




* Stop.sh

#!/bin/sh


# Get SyncManagerServer PID

PID=`ps -ef | grep SyncUser | grep java | awk '{print $2}'`

if [ -n "$PID" ]

then

    echo "=====SyncUser is running at" $PID "Shutdown Client now"

                kill -9 $PID

rm app.pid

else

        echo "=====SyncUser isn't running====="

#       exit 1

fi




예전에 Stop 만들어둔걸

Sync 프로세스 수정요청이 들어와서 발견햇다. 까먹고있었네

어디선가 유용하게 쓰일 것 같아서 일단 저장저장



stop은 아래와같이 pid를 지정해서 간단하게 만들어도 된다.



* Stop2.sh

kill -9 $(cat app.pid)
rm app.pid




물론 아래 두개가 kill로 실행함으로 주의

반응형