리눅스 jar 실행 스크립트 예시

2020-10-09

리눅스에서 간단하게 jar를 실행하는 방법은 java -jar test.jar 명령어이다. 근데 이 명령어를 쓰면 자주 끄고 켜줘야하는 파일이거나 테스트해야 할 때는 일일이 ps -ef | grep test.jar로 찾아서 프로세스를 죽여야하는 반복 노동이 발생한다.

그래서 run.sh와 같이 스크립트 파일을 하나 만들어 놓고 관련 옵션이나 자주 사용하는 명령어를 미리 정의해두면 편하다. 아래 코드는 간단하게 .jar를 멈추고 시작하고 재시작하는 명령어를 포함한 .sh 파일 예시이다. 기본 적으로 nohup(백그라운드)으로 실행되기 때문에 그게 싫다면 명령어를 수정해서 사용하면 된다.

#!/bin/sh
SERVICE_NAME=demo
PATH_TO_JAR=/usr/local/server/demo.jar
PID_PATH_NAME=./demo.pid
JAVA_OPT="-Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m"

case $1 in
    start)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            kill $PID;
            rm $PID_PATH_NAME
        fi

        echo "$SERVICE_NAME starting ..."
        nohup java -jar $JAVA_OPT $PATH_TO_JAR >> /dev/null &
        echo $! > $PID_PATH_NAME
        echo "$SERVICE_NAME started ..."
    ;;
    stop)
        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
        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