이전에 crontab을 배웠으니 활용을 해보겠습니다.
spring-start.sh
nohup java -jar /home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
spring-stop.sh
echo "Spring Boot Stop....."
SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOT.jar)
kill -9 $SPRING_PID
spring-restart.sh
SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOT.jar)
SPRING_PATH="/home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOT.jar"
echo $SPRING_PID
echo $SPRING_PATH
if [ -z "$SPRING_PID" ]; then
echo "스프링 종료된 상태...."
echo "스프링 재시작 - $(date)" 1>>/home/ubuntu/cron-restart/spring-restart.log
nohup java -jar $SPRING_PATH 1>log.out 2>err.out &
else
echo "스프링 시작된 상태...."
fi
deploy.sh
# 1. 배포 프로세스
echo "deploy start..."
echo "1. JDK install"
echo "2. github project downloag"
echo "3. graglew 실행권한 주기"
echo "4. project build하기"
echo "5. ubuntu timezone setting 하기"
echo "6. nohub springboot 실행시키기"
# 2. 스프링서버 종료시 재시작
echo "crontab 등록 - spring restart..."
crontab -l > crontab_new
echo "* * * * * /home/ubuntu/cron-restart/spring-restart.sh" 1>>crontab_new
crontab crontab_new
rm crontab_new
이제 모든 스크립트 파일을 만들었습니다.
deploy.sh만 실행하면 crontab을알아서 등록하고, 서버를 설정한 시간마다 재시작 할것입니다.
./deploy.sh
설계한대로 잘 작동하는것을확인 할 수 있습니다!