[Linux]. 크론탭(crontab)으로 리눅스 서버 꺼지면 자동 재실행 하기

jongmin-oh·2023년 5월 5일
0

배경

나는 현재 엘라스틱 서치 8.1.2 버전을 사용중이고 3개의 클라우드 서버(AWS EC2)를 바인딩하여 사용중이다.

elasticsearch node 1 : 4GB , 2cpu  t3.medium
elasticsearch node 2 : 2GB , 2cpu t3.small
elasticsearch node 3 : 2GB , 2cpu t3.small

문제 발생

상대적으로 저 스펙인 (노드2) 와 (노드3) 서버가 자주 꺼지는 문제가 발생했다.

문제를 해결하기 위해 elasticsearch.log 를 살펴보았지만 원인을 찾기 어려웠다.. 계속 디버깅중...
그래서 임시방편이기도 하면서 제일 간단한 방법인 죽으면 자동으로 다시 실행시키는 방법을 적용해보기로했다.

리눅스에는 크론탭(crontab)이라고해서 자동으로 스케줄링해주는 도구가 있다.
이를 활용해서 적용해보고자 한다.


Bash 파일 ( 쉘 스크립트 작성하기 )

크론탭을 적용하기 위해선 일단 커멘드 명령어의 집합인 bash 파일을 작성해야한다.

엘라스틱 서치 백그라운드(데몬)실행

vi start.sh
/home/{user}/{es_dir}/bin/elasticsearch -d -p es.pid

엘라스틱 서치 재실행

vi restart.sh
#!/bin/sh

# 엘라스틱 서치로 시작하는 프로세스 확인
pid=`ps -ef | grep "elasticsearch" | grep -v 'grep' | awk '{print $2}'`

# 엘라스틱 서치 프로세스가 죽었으면 start.sh 실행
if [ -z $pid ]; 
then
	echo $(date)
	bash /home/{user}/{es_dir}/start.sh
	echo ""
fi

실행권한 변경 ( 실행 권한이 있어야 실행할 수 있다. )

chmod 755 *.sh

크론탭(crontab) 적용하기

crontab -e
0 */1 * * * bash /home/{user}/{es_dir}/restart.sh >> /home/{user}/{es_dir}/elastic_restart.log

위 크론탭 명령어의 해석은 

매시간(정각)마다 restart.sh 파일을 실행시키라는 명령어이고 실행 로그를 저장하는 명령어이다.

크론탭 명령어의 자세한 내용은 다른 자료를 찾아보시면 다양하게 나와있습니다.

profile
Technical Problem Solver (기술로 문제를 해결하는 사람)

0개의 댓글