본문 바로가기
IT/Linux

[Linux] 리눅스 배치 크론탭 crontab 설정 ( 조회, 등록, 삭제)

by 스터딩아재 2021. 12. 20.
반응형

리눅스 crontab

 

요즘은 배치솔루션이 많아 사용이 줄고 있지만 여전히 리눅스의 cron을 활용하는 경우가 많습니다. cron은 꼭 배치를 위한 것은 아니지만 스케줄 역할을 하며 주로 배치 등록 및 실행에 주로 쓰입니다. 리눅스 환경에서 배치 실행을 위해 crontab 설정 방법에 대해 알아보겠습니다.

 

 

 

크론(Cron) 과 크론탭(Crontab) 차이

 

Cron은 정해진 스케줄에 따라 작업을 수행하는 데몬.

Crontab은 데몬이 바라보는 작업 리스트 입니다.

 

보통 cron과 crontab을 구분하지 않고 쓰긴 하지만

배치를 만들건데 리눅스의 Cron을 활용하면 되고, Shell 파일 만들어서 Crontab에 등록해야 합니다.

와 같이 쓰는 것이 정확합니다.

 


 

Crontab 기본 형태

 

분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7) /경로/파일.sh

 

요일의 경우 일(0,7), 월(1), 화(2), 수(3), 목(4), 금(5), 토(6)

* 스프링 크론과는 설정방법이 다르니 주의하세요. 

 


 

Crontab 설정

 

1) 조회

crontab -l

 

위 코드 입력 시 등록된 작업 리스트가 조회됩니다.

 

 

2) 등록, 수정

crontab -e

 

위 코드 입력 시 vi 모드로 진입합니다. 

i를 눌러 수정 모드로 진입하고, :wq로 저장하거나 :q로 그냥 빠져나옵니다.

 

* 등록 예제는 아래 참고

 

 

3) 삭제 (주의)

crontab -r

 

특정 명령만 지우는 게 아니라 등록된 crontab 자체가 지워져 모두 날아갈 수 있으니 주의해야 합니다.

 


 

Crontab 등록 예제

1) 매분/30초마다 실행

// 매분
* * * * * /test/batch.sh

// 30초마다
* * * * * /test/batch.sh & sleep 30;/test/batch.sh

 

2) 특정 시간 실행

// 매일 3시 30분 실행
30 3 * * * /test/batch.sh

// 일요일 3시 30분 실행
30 3 * * 0 /test/batch.sh

 

3) 반복 실행

// 30분 마다 실행
*/30 * * * * /test/batch.sh

// 0분, 30분 마다 실행
0,30 * * * * /test/batch.sh

// 매시 0분부터 30분까지 실행
0-30 * * * * /test/batch.sh

 

4) 로그(log)

* * * * * /test/batch.sh > /log/testBatch.log 2>&1

 

5) 주의사항

// crontab 명령어는 무조건 한줄로 작성, 아래의 경우 error
* * * * * 
/test/batch.sh

// 주석은 #
#* * * * * /test/batch.sh

 


 

.sh 파일에서 java 호출 예시

 

 

#!/bin/sh

#batch.sh

#----------------------------------------
# 실행명령 설정
#----------------------------------------
export LANG=ko_KR.eucKR
export HOME_DIR=/app/batch
export LOG_DIR=$HOME_DIR/log
DAY=`date '+%Y-%m-%d'`

#----------------------------------------
# JDK 디렉토리 경로 설정 
#----------------------------------------
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
export CLASSPATH=$HOME_DIR
export CLASSPATH=$CLASSPATH:.:./:$HOME_DIR/bin
export CLASSPATH=$CLASSPATH:$HOME_DIR/lib/ojdbc14.jar

$JAVA_HOME/bin/java -classpath $CLASSPATH kr.co.test.testBatch.java $1 $2
echo $LOG_DIR/testBatch$DAY.LOG

 

 

 

 

그리드형

댓글