Development/OS

[Linux] 자바 웹 어플리케이션 서버 실행 쉘(Shell) 스크립트

반응형

JAVA로 작성한 jar파일을 데몬으로 돌려야할 때 필요한 쉘 스크립트 정리


기본적으로 java -jar 를 이용해 jar파일을 실행하는 것을 서비스 운영 모드로 동작하게 해주는(관리 측면 효율성) 쉘 스크립트이다.



#!/bin/sh
SERVICE_NAME=서비스명
PATH_TO_JAR=실행할 JAR 파일 path.jar
PID_PATH_NAME=./서비스명.pid
JAVA_OPT="-Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m"
case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."
        if [ ! -f $PID_PATH_NAME ]; then
            nohup java -jar $JAVA_OPT $PATH_TO_JAR >> /dev/null &
                        echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is already running ..."
        fi
    ;;
    stop)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stoping ..."
            kill $PID;
            echo "$SERVICE_NAME stopped ..."
            rm $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ...";
            kill $PID;
            echo "$SERVICE_NAME stopped ...";
            rm $PID_PATH_NAME
            echo "$SERVICE_NAME starting ..."
            nohup java -jar $JAVA_OPT $PATH_TO_JAR >> /dev/null &
                        echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
esac


이렇게 쉘 파일을 작성하고

run.sh 라고 작성을 했다면


./run.sh start

./run.sh restart

./run.sh stop


으로 서버를 시작/재시작/중지 시킬 수 있다


(물론 실행하기 위해선 실행권한을 파일에 부여를 해야 한다)

run.sh 로 가정했을 때

root 권한을 받은 뒤


chmod 755 run.sh


명령어로 해당 쉘 스크립트에 실행 권한을 부여할 수 있다.


해당 프로세스 PID 정보는 PID_PATH_NAME 에 저장이 되며

JAVA_OPT 에 JVM 옵션을 지정할 수 있다.


현재 시작/재시작 시 /dev/null로 리다이렉트를 하고 있는데, 이를 log파일 이름으로 바꾸게 되면 현재 데몬 실행을 하는 로그를 남기게 된다.


nohup java -jar -Dspring.profiles.active=prod $JAVA_OPT $PATH_TO_JAR >> daemon.log 와 같이 고치면 daemon.log에 현재 실행 로그가 남는다.

반응형