본문 바로가기
IT/IT 잡지식

OpenGrok Crontab 으로 주기적으로 indexing 하기

by 큰공 2021. 3. 19.
728x90
반응형

 

개요

이전 글에서, opengrok 설치하는 내용을 포스팅 하였다.

2021.03.18 - [IT/IT 잡지식] - Opengrok 설치 하기

 

Opengrok 설치 하기

Opengrok 이란?  아마도 이글을 검색해서 들어오신 분이라면, OpenGrok 이 대충은 뭐하는것인지 알고 들어왔을 것이다.  그럼에도, OpenGrok 이 뭔지 간략하게 설명하고자 한다.  공식적인 정의를 살펴

coinpipe.tistory.com

 이 번 글에서는 opengrok 을 crontab 을 이용하여, 매일 자동으로 소스를 업데이트 하고, indexing 하는 내용을 포스팅 해보고자 한다.

 

CRONTAB 이란?

 소프트웨어 유틸리티 cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러이다. 소프트웨어 환경을 설정하고 관리하는 사람들은 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해 cron을 사용한다.
출처 : 위키백과

 즉, 자동으로 주기적으로 실행하게 해주는 스케쥴러다! 라고 보면 된다.

 

여러가지 GIT 을 한번에 PULL

이 서버의 Opengrok 서버의 폴더 구성은 아래와 같다. repo 를 이용하여 묶여져 있지 않고, app 폴더 하위에 각기 다른 A / B / C / D 의 App 이 독립된 Git Repository를 가진다.

 소스를 전체를 git pull 하기 위해서 app.A 폴더가서, git pull / app.B 폴더가서, git pull.....등의 반복전인 작업이 필요하게 된다. 이를 손쉽게 하는 방법에 대해서 알리고자 한다.

 

├── app
├── app.A (독립 Git)

├── app.B (독립 Git)

├── app.C (독립 Git) 

├── app.D (독립 Git)

 

ls | xargs -I{} -P10 git -C {} pull

해당 명령을 APP 폴더 에서 입력하면, APP 폴더 하위를 돌면서 git pull 을 수행한다.

repo 가 없는 환경에서 유용하게 쓰일 수 있다.

 

CRONTAB Shell 파일

 Crontab 을 수행하기 위해서는 스크립트를 먼저 sh 파일로 작성해야 한다. sh 파일의 경로는 /DATA/opengrok/sync.sh 으로 한뒤, 아래와 같이 스크립트를 작성하자.

#!/bin/bash

function print_msg_with_time
{
  msg=$1
  echo "$msg - [`date`]"
}

print_msg_with_time "Start Source Sync (`date`)"
# Source Sync
cd /DATA/opengrok/src/app
ls | xargs -I{} -P10 git -C {} pull

# Source Indexing
print_msg_with_time "Start OpenGrok indexing (`date`)"
java -Djava.util.logging.config.file=/DATA/opengrok/etc/logging.properties -jar /DATA/opengrok/dist/lib/opengrok.jar -c /usr/local/bin/ctags -s /DATA/opengrok/src -d /DATA/opengrok/data -H -P -S -G -W /DATA/opengrok/etc/configuration.xml -U http://localhost:8080/source 

print_msg_with_time "End OpenGrok indexing (`date`)"

function print_msg_with_time 함수는 메시지를 출력하는 것을 뜻하며, crontab이 주기적으로 수행되는 작업 이다 보니, 시간에 관련된 내용이 추가되면 좋을거 같아 'date' 변수를 입력하였다.

 

유의해야 할 사항은 crontab에서는 상대경로를 지정하지 못한다. 소스가 있는 곳의 전체 경로를 지정해 주고, 위에서 설명한 하위 Repository git pull 하위 명령을 수행한다.

 

git pull 이 끝난뒤, indexing 명령으로 소스를 업데이트 한다.

 

 

Crontab 등록

 이제 해당 스크립트를 주기적으로 수행하기 위해서 Crontab 을 등록하는 절차이다.

 아래 명령어로, Crontab을 edit 모드로 연다.

$ crontab -e

 마지막 줄에 아래를 추가하자.

00 20 * * * /DATA/opengrok/sync.sh

 매일 오후 8시 (20시)에 해당 shell 파일을 수행한다.

 

 

맺으며

 자동화는 항상 업무 능률을 향상시키는데 엄청난 도움을 준다. 업무 자동화를 위해서 crontab 을 사용하자!

 

 

728x90
반응형

댓글