본문 바로가기

개발/BACK

[Ubuntu] 서버 Tomcat 꺼지면 재시작하는 스크립트 작성하기

728x90


 

[서버 관련 포스팅 글]

 

https://hdhdeveloper.tistory.com/106

 

[Ubuntu] Linux 에서 톰캣 재시작 스크립트 작성하기

[서버 관련 포스팅 글] https://hdhdeveloper.tistory.com/104 [Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기 sudo vi /etc/fail2ban/jail.conf​ 각설 이번에 보안의 중..

hdhdeveloper.tistory.com

https://hdhdeveloper.tistory.com/104

 

[Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기

sudo vi /etc/fail2ban/jail.conf​ 각설 이번에 보안의 중요성에 대해 실전에서 배웠다 클라우드 서버를 운영하면서 소위 무작위 대입 공격이라고 불리는 Brute Force 공격으로 인해 root 계정이나 서버에

hdhdeveloper.tistory.com

https://hdhdeveloper.tistory.com/99

 

ssh 원격 접속하기 (ssh key 설정 포함)

외부에서 서버에 접속해서 제어하는 방법은 여러가지가 있다 그 중 Mac에서 터미널을 이용해 원격 접속하는 방법을 포스팅하려고 한다 SSH 시큐어 셸(Secure SHell, SSH)은 네트워크 상의 다른 컴퓨터

hdhdeveloper.tistory.com

 


서버를 고도화하거나, 굳이 고도화를 하지 않아도 언제든지 트러블 슈팅이 일어날 수 있는게 서버인 것 같다

 

그래서, Linux 서버내에 있는 스케쥴러(crontab)를 이용해서 

 

10분마다 실행되는 스크립트로, 서버가 종료되어 있으면, 다시 구동시키는 스크립트를 작성하는 예제를 

 

작성해 볼 예정이다

 


톰캣은 정상적으로 구동된다면, http code 를 200 으로 리턴해준다

 

그러면 이 200이란 코드를 이용해서 톰캣 검사 로직을 작성할 수 있게 된다

 

아래 명령어를 사용해 파일을 생성하고 

 

vi tomcatStatus.sh

 

변수를 먼저 선언해보자

 

1
2
3
4
5
6
7
 #!/bin/bash
 
export STATUS=$(curl --/dev/null -"%{http_code}" http://127.0.0.1:8080)
 
export ANSWER=200
cs

 

STATUS :

톰캣이 리턴해주는 http Code

 테스트 예제이기 때문에, 요청 URL이 루프백 주소로 입력되어 있는데, 

자신의 URL 주소를 입력해주면 된다

 

ANSWER :

정상 http 코드

 


코드는 사실 간단하다

 

내 URL http_code와 ANSWER (정상) 를 비교해서, 

 

값이 다르면 톰캣을 실행시켜주면 끝이다

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
 
export STATUS=$(curl --/dev/null -"%{http_code}" http://127.0.0.1:8080)
 
export ANSWER=200
 
 
echo "$STATUS";
 
if [[ $STATUS -ne $ANSWER ]]; then
 
        echo "error : tomcat is not found : tomcat Reload start";
 
        sudo fuser -8080/tcp
 
        /tomcat/bin/startup.sh
 
        echo "success run tomcat server";
 
else
        echo "tomcat is started";
 
fi  
cs
if [[ $STATUS -ne $ANSWER ]]; then

 

이 if 구문에서 대괄호는 2쌍이 필요하다, 1쌍만 쓰면 오류남

 

그리고 배쉬 쉘 스크립트에서는 정수형 비교를 하려면 

 

!=   -> -ne  : 다르다

= -> -eq  : 같다

 

이렇게 비교 표현식을 사용해야 한다

안쓰면 오류남

 


sudo fuser -k 8080/tcp

위 코드 구문은 8080 tcp 포트가 잡고있는 PID를 삭제한다

 

종료된 이후에도 PID가 남아있는 경우가 있으니, 해당 구문으로 남아있는 PID를 kill 해주자

 

그리고 tomcat 을 실행시켜주면 톰캣이 살아있는지 검사하는 로직은 완료되었다

 

:wq!

를 입력해서 저장 후, 스크립트를 빠져나오자

 

그리고 해당 스크립트가 존재하는 경로에 가서 스크립트를 실행시켜보자

 

[./tomcatStatus.sh]

 

내가 의도한대로 로그가 출력되면 성공이다

 

이제 해당 스크립트를 CronTab에 등록하면 끝이다

 


 

여기서 생성한 스크립트를 서버에서 자동으로 실행시키고 싶으면,

 

리눅스 작업 스케쥴러인 CronTab 을 이용하면 된다

 

CronTab 사용방법

 

해당 명령어를 입력해서 쉘 스크립트파일을 열어보자

 

vi /etc/crontab

 

 

해당 파일로 들어가보면

 

[* * * * * root /test/test] 이런 식으로 적혀있는 문구들이 보일 것이다

 

cron을 사용해봤으면 이해할 수 있는데,

사용 방법은 아래 이미지에 나와있다 

 

 

내가 생각해서 만들기 정 귀찮으면, 아래 사이트처럼 cron식으로 생성해주는 사이트가 존재한다

 

https://crontab.guru/

 

Crontab.guru - The cron schedule expression editor

 

crontab.guru

여기서 원하는 cron식으로 생성해서 동일하게 입력해주고 저장 후 나오면

 

저장 시점부터 내가 지정한 시간에 주기적으로 실행될 것이다

728x90