배치프로그램을 또 관리하게 되었다.
WINDOWS 서버에서 스케쥴로 동작하던 과거와 달리 LINUX 서버를 사용하게 되어
crontab 설정으로 배치 스케쥴링을 관리하고 있다.
물론 Spring Framework를 사용할 때처럼 Quartz를 사용하여 각 프로젝트별로
배치 프로그램을 관리 및 수행하는 것도 좋은 방법인 듯 하나,
배치만 별도로 관리하거나 중앙에서 관리해야 하는 경우는 crontab이 적절하다고 본다.
crontab 사용법 / 설정방법
cron, crond, cron daemon, crontab 다 같은 용어로 사용되며
리눅스용 작업 스케쥴러, 프로세스 예약 데몬 등으로 생각하면 된다.
먼저 간단한 예시를 보자.
######## cron tab example ##########
# 분 시 일 월 요일 명령어 순서로 작성하면 됩니다.
# #은 주석입니다. 수행되지 않는 라인이나 주석에 사용하세요.
#### Entry for Update HR Information #####
00 06 * * * su - ojava -c /ojava/batch/HR/dept.sh
*/5 * * * * su - ojava -c /ojava/batch/HR/password.sh
예시 파일에 적은 것을 보고 유추할 수 있듯이 crontab 구성 순서는 라인 단위이다.
분(minuit) 시(hour) 일(day) 월(month) 요일(day of the week) 순서로 작성하고
반복되어야 하는 단위는 * 로 작성하면 매번 수행된다.
분 단위 작성 가능 범위 : 0 - 59 분
시 단위 작성 가능 범위 : 0 - 23 시
일 단위 작성 가능 범위 : 1 - 31 일
월 단위 작성 가능 범위 : 1 - 12 월
요일 단위 작성 가능 범위 : 0 - 6 (0 일요일, 1 월요일, 2 화요일, 3 수요일, 4 목요일, 5 금요일, 6 토요일)
이러한 작성 기준에 따라 예시의 첫번째 dept.sh 은 매일 오전 6시 00분에 수행되며
두번째는 */5 가 뭘 의미하나 하겠지만 그냥 5분 단위로 수행하겠다는 의미이다.
분단위로 주기적으로 수행되어야 하는 배치의 경우 이와 같이 작성하면 된다.
*/5 * * * * : 매일 5분 단위
*/20 * * * * : 매일 20분 단위
00 */4 * * * : 매일 4시간 단위 정각 (00시, 04시, 08시, 12시, 16시, 20시 -> 6번)
혹시 하루 두 번 수행되어야 하는 배치가 있는데 그럼 시간을 어떻게 반으로 나눠야 하나!
라고 고민할 수 있으니 따로 적자면... 오전 6시와 오후 2시에 수행되어야 하는 배치가 있을 땐
00 6,14 * * * /ojava/batch/usercustom.sh
위와 같이 쓰면 오전 6시 오후 2시 정각에 수행되는 설정이 완료된다.
콤마를 사용하여 중복해서 시간 설정이 가능하다.
업무용도로 사용하는 배치가 대부분일테니 평일에만 수행되었으면 하는 바람이 있다면
- 을 잘 알아두면 좋겠다.
30 06 * * 1-5 /ojava/batch/HR/employ.sh
인사정보를 업데이트하는 배치는 매주 월요일 ~ 금요일 오전 6시 30분에 수행된다.
불필요하게 주말에 수행되지 않도록 위와 같이 설정할 수 있다.
- 와 / 를 조합해서 사용하면 좀 더 세분화 된 시간 설정이 가능하다.
*/5 7-21 * * * /ojava/timesetting.sh
30 0-10/3 * * * /ojava/every3hour.sh
매일 7시부터 21시 사이에 5분 단위로 명령어를 수행하도록 하는 배치와
0시 부터 10시 사이에 3시간 단위로 (0, 3, 6, 9) 30분에 수행되는 배치 설정을 할 수 있다.
원하는 시간에 명령어 또는 배치 프로그램을 수행할 수 있길!
'Server' 카테고리의 다른 글
[네린이 공부일기] 기초 중의 기초 IP주소 체계 (0) | 2022.04.11 |
---|---|
[네린이 공부일기] 내부망/외부망 트래픽 흐름 (0) | 2022.04.09 |
[네린이 공부일기] 트래픽 전송 모드 : 유니캐스트, 멀티캐스트, 브로드캐스트 (0) | 2022.04.08 |
[네린이 공부일기] LAN과 WAN, 네트워크 주소 체계 (0) | 2022.04.07 |
IP 주소 연결방식 : VIP, MIP, Policy-based (0) | 2017.12.05 |