Mac/Utiility

[Mac] Crontab 을 사용한 Jenkins restart 주기 반복 호출

mystic-agit 2024. 4. 19. 14:14

목 차

  1. Crontab 사용하게된 이슈
  2. Crontab 으로 호출할 sh 스크립트 작성
  3. Crontab 설정
  4. Crontab 작업 목록 확인 / 삭제

 

 

1. Crontab 사용하게된 이슈

Jenkins를 구동하는 기기에서 간헐적으로 외부에서 접속하는 Jenkins 페이지 url이 연결되지 않는 현상이 있다.

실제 구동하는 기기에서 url 접속을 해보면 정상 동작하지만, 타 기기에서 외부 접속이 url이 연결되지 않았다.

완전한 연결 실패 이슈가 아니라서 원인은 찾지 못하였고, 다만 이때 젠킨스 재시작을 해주면 해소가 되었다.

brew services restart jenkins

 

Jenkins 빌드를 자주 사용하는 경우.. 혹은 Jenkins 구동 중인 기기가 오랫동안 로그오프되지 않고 켜있는 경우 간헐적으로 발생하여
주기적으로 젠킨스 재식을 해주면 불편을 겪지 않을것 같아 crontab을 통해서 젠킨스 재시작을 해줘보기로 하였다.

 

2. Crontab 으로 호출할 sh 스크립트 작성

필요한 기능을 아래처럼 구성해보았다.

  • 실제 호출되었는지 확인할 수 있는 로그
  • 젠킨스 재시작 명령
# 코드가 호출된 현재 날짜 및 시간 정보 획득
today=`date +%m-%d-%y`
time=`date +%T`
info="$today, $time"

# 날짜 및 시간 정보를 파일 쓰기
echo $info >> /Users/mysticagit/LogFiles/JenkinsRestartLog.txt

# 아래처럼 저장됨 (예시 데이터)
# 04-19-24, 12:05:00
# 04-19-25, 12:06:01
# 04-19-26, 12:07:00
# 04-19-27, 12:08:00

# 젠킨스 재시작
brew services restart jenkins

 

3. Crontab 설정

Crontab은 아래 명령을 통해 작업할 내용을 작성할 수 있다.

crontab -e

 

수행 시 vi 창이 노출되고 정의된 형식을 작성한다.

Crontab 작업 작성 방법 예

# 앞의 5개의 * 은 각각 시간 셋팅을 의미한다.
# 앞부터 {분} {시} {일} {월} {요일}

# 예제 코드
# 매 1분마다 testscript.sh 을 수행
* * * * * /Users/mysticagit/testscript.sh

# 매일 3분 간격으로 실행
*/3 * * * * /Users/mysticagit/testscript.sh

# 매일 10분 간격으로 실행 (00:10, 00:20, 00:30 ..)
*/10 * * * * /Users/mysticagit/testscript.sh

# 매일 오전 10시 30분마다 실행
30 10 * * * /Users/mysticagit/testscript.sh

 

수행하려는 명령이 sh 스크립트 호출 코드가 아니라면 시간 커맨드 뒤에 별도의 명령을 추가할 수 있다.

 

4. Crontab 작업 목록 확인 / 삭제

Crontab 에 등록된 작업 목록은 아래 커맨드로 확인할 수 있다.

crontab -l

 

Crontab 에 등록된 모든 내용을 삭제하려는 경우 아래 커맨드로 제거할 수 있다.

crontab -r