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
반응형
'Project > Management' 카테고리의 다른 글
[Management] Nginx를 이용한 Vue.js와 Spring 배포 (0) | 2022.11.08 |
---|---|
[Management] API 통신 시 로그 출력하는 필터 추가 (0) | 2022.11.03 |
[Management] 날짜 별 로그 생성 (0) | 2022.10.24 |
[Management] DB Error : ORDER BY clause is not in SELECT list (0) | 2022.10.14 |
[Management] vue.js 빌드 파일 spring project 병합 (0) | 2022.10.14 |