[서버 관련 포스팅 글]
https://hdhdeveloper.tistory.com/106
https://hdhdeveloper.tistory.com/104
https://hdhdeveloper.tistory.com/99
서버를 고도화하거나, 굳이 고도화를 하지 않아도 언제든지 트러블 슈팅이 일어날 수 있는게 서버인 것 같다
그래서, Linux 서버내에 있는 스케쥴러(crontab)를 이용해서
10분마다 실행되는 스크립트로, 서버가 종료되어 있으면, 다시 구동시키는 스크립트를 작성하는 예제를
작성해 볼 예정이다
톰캣은 정상적으로 구동된다면, http code 를 200 으로 리턴해준다
그러면 이 200이란 코드를 이용해서 톰캣 검사 로직을 작성할 수 있게 된다
아래 명령어를 사용해 파일을 생성하고
vi tomcatStatus.sh
변수를 먼저 선언해보자
1
2
3
4
5
6
7
|
#!/bin/bash
export STATUS=$(curl -s -o /dev/null -w "%{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 -s -o /dev/null -w "%{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 -k 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식으로 생성해주는 사이트가 존재한다
여기서 원하는 cron식으로 생성해서 동일하게 입력해주고 저장 후 나오면
저장 시점부터 내가 지정한 시간에 주기적으로 실행될 것이다
'개발 > BACK' 카테고리의 다른 글
[SpringFramework] 마이바티스 환경에서 INSERT,UPDATE 무시하기 (0) | 2022.08.15 |
---|---|
[Mysql] limit 페이징에서 쿼리 조회 건 수 구하기 SQL_CALC_FOUND_ROWS (0) | 2022.06.15 |
[Ubuntu] Linux 에서 톰캣 재시작 스크립트 작성하기 (0) | 2022.05.23 |
[SpringFramework] 게시판 페이징 기능 예제 ,쉽게 페이징을 구현하자 (0) | 2022.05.10 |
[Ubuntu 보안 설정] Fail2Ban SSH 구축 방법 무작위 대입 공격 (Brute-Force) 대응하기 (0) | 2022.05.03 |