SpringBoot Jar/War 파일을 리눅스에서 백그라운드로 구동시 필요한 쉘스크립트를 작성하였습니다.
SERVICE_NAME : 서비스 이름을 설정합니다.
SERVICE_PATH : 서비스 경로를 설정합니다.
JAR_NAME : 구동하려는 Jar/War 파일명을 설정합니다.
구동은 run.sh {start | stop | restart | status } 로 구동합니다.
#!/bin/bash #-------------------------------------------------------- # service information #-------------------------------------------------------- SERVICE_NAME="WAS ADMIN SERVER" SERVICE_PATH=/sw/was_admin JAR_NAME=was_admin-0.0.1-SNAPSHOT.war PID_NAME=was.pid #-------------------------------------------------------- # java run information #--------------------------------------------------------a JAVA_PATH="java" #JAVA_OPT="-Xms1024m -Xmx1024m" JAVA_OPT="" RUN_SUDO="sudo" RUN_NOHUP="nohup" start() { echo "------------------------------------------------------" echo " Starting $SERVICE_NAME ..." echo "------------------------------------------------------" local CHECK_PID=$(get_status) if [ -n "${CHECK_PID}" ]; then echo -e "${SERVICE_NAME} is already running...\n" ps -ef | grep ${JAR_NAME} | grep -v grep echo "" exit 0 fi rm -f $SERVICE_PATH/$PID_NAME $RUN_SUDO $RUN_NOHUP $JAVA_PATH -jar $JAVA_OPT $SERVICE_PATH/$JAR_NAME >> /dev/null 2>&1 & local PID=$! echo $PID > $SERVICE_PATH/$PID_NAME sleep 1 if [ -n ${PID_NAME} ]; then echo "Starting..." local CHECK_PID=$(get_status) if [ -n "${CHECK_PID}" ]; then echo -e "Created Process ID : $PID" echo -e "Process started...\n" #ps -ef | grep ${JAR_NAME} | grep -v grep #echo "" exit 0 else echo -e "Failed to start...\n" fi else echo -e "Failed to start...\n" fi } stop() { echo "------------------------------------------------------" echo " Stopping $SERVICE_NAME ..." echo "------------------------------------------------------" local CHECK_PID=$(get_status) if [ -n "${CHECK_PID}" ]; then ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}' | xargs $RUN_SUDO kill -9 2>/dev/null if [ $? -eq 0 ];then rm -f $SERVICE_PATH/$PID_NAME echo -e "Stop success...\n" exit 0 fi else rm -f $SERVICE_PATH/$PID_NAME echo -e "Process is not running...\n" fi } restart() { echo "------------------------------------------------------" echo " Restaring $SERVICE_NAME ..." echo "------------------------------------------------------" # stop process echo "Process stopping..." ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}' | xargs $RUN_SUDO kill -9 2>/dev/null echo -e "Process stopped...\n" rm -f $SERVICE_PATH/$PID_NAME # start process rm -f $SERVICE_PATH/$PID_NAME $RUN_SUDO $RUN_NOHUP $JAVA_PATH -jar $JAVA_OPT $SERVICE_PATH/$JAR_NAME >> /dev/null 2>&1 & local PID=$! echo $PID > $SERVICE_PATH/$PID_NAME sleep 1 if [ -n ${PID_NAME} ]; then echo "Starting..." local CHECK_PID=$(get_status) if [ -n "${CHECK_PID}" ]; then echo -e "Created Process ID : $PID" echo -e "Process started...\n" #ps -ef | grep ${JAR_NAME} | grep -v grep #echo "" exit 0 else echo -e "Failed to start...\n" fi else echo -e "Failed to start...\n" fi } status() { echo "------------------------------------------------------" echo " Status $SERVICE_NAME ..." echo "------------------------------------------------------" local CHECK_PID=$(get_status) if [ -n "${CHECK_PID}" ]; then echo -e "Process is running...\n" ps -ef | grep ${JAR_NAME} | grep -v grep echo "" else echo -e "Process is not running...\n" fi } get_status() { ps aux | grep ${JAR_NAME} | grep -v grep | awk '{print $2}' } case $1 in start) start ;; stop) stop ;; restart) restart ;; status) status ;; *) echo "------------------------------------------------------" echo " $SERVICE_NAME ..." echo "------------------------------------------------------" echo -e "Run with parameter (start, stop, restart, status)\n" ;; esac