반응형
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에 현재 실행 로그가 남는다.
반응형
'Development > OS' 카테고리의 다른 글
[linux] 오래된 log 파일 찾아서 지우기 (0) | 2017.11.09 |
---|---|
[Linux] 리눅스 ssh 프롬프트 폰트 coloring 적용 (2) | 2017.07.23 |
[Linux] sudo 로그인 시 패스워드 입력 없이 권한얻기 (0) | 2017.07.23 |
[C] 컴파일러 메모리 배치표 (0) | 2015.11.21 |
[OS] Thread Safe란? (2) | 2015.11.21 |