Project/Management

[Management] AWS 배포 빌드 파일 자동 재시작 스크립트

lakelight 2022. 10. 27. 16:54
728x90
반응형

 

현재 진행중인 프로젝트를 AWS에 배포를 하였습니다.
배포를 하고 수정사항이 계속 나오고 있는 시점에 젠킨스를 적용하기 전이라
서버를 재시작할 때
실행중인 프로세스를 찾아서 종료하고 다시 실행시키는 작업이 반복되었습니다.

그래서 스크립트 파일을 통해 실행 시켰을 때 이작업을 바로 해주는 쉘 스크립트를 작성하였습니다.

 

start.sh 

#!/bin/bash

echo "start Project Spring Boot Application"

#현재 실행중인 프로세스의 PID를 찾습니다.
CURRENT_PID=$(ps -ef | grep java | grep jar) 
echo "$CURRENT_PID"

#실행중인 프로세스가 없다면 프로세스 종료할 필요가 없습니다.
if [ -z $CURRENT_PID ];
	echo "not running Application"

#실행중인 프로세스가 있다면 프로세스를 종료합니다.
else
	echo "kill current Application"
	kill -9 $CURRENT_PID
	sleep 10
fi

#Java 빌드파일을 실행합니다.
echo "restart T-WMS Spring Boot Application"
nohup java -jar -Duser.timezone=Asia/Seoul project-0.0.1-SNAPSHOT.war &

 

스크립트 파일 실행
./start.sh

 

스크립트 파일의 오류를 발견하여 코드를 수정하였습니다.

프로세스를 찾을 때 java로 찾을 때 여러 서버를 배포하면 문제가 생길 수 있다는 생각이 들었습니다.
그래서 포트 번호를 이요해서 프로세스 아이디를 찾고 종료하도록 하는 코드로 

#!/bin/bash

echo "start Project Spring Boot Application"

#현재 {포트번호}에 해당하는 실행중인 프로세스의 PID를 찾습니다.
CURRENT_PID=$(sudo lsof -i:{포트번호})
echo "$CURRENT_PID"

#실행중인 프로세스가 없다면 프로세스 종료할 필요가 없습니다.
if [ -z $CURRENT_PID ];
	echo "not running Application"

#실행중인 프로세스가 있다면 프로세스를 종료합니다.
else
	echo "kill current Application"
	kill -9 $CURRENT_PID
	sleep 10
fi

#Java 빌드파일을 실행합니다.
echo "restart T-WMS Spring Boot Application"
nohup java -jar -Duser.timezone=Asia/Seoul project-0.0.1-SNAPSHOT.war &

 

이렇게 쉘 스크립트 파일을 통해 빌드파일 재시작을
쉽게 할 수 있게 되었습니다.

이상 포스팅 읽어주셔서 감사합니다.
728x90
반응형